#ODFTOOLKIT-413# Fixing copying of subdocuments and various minor enhancements

git-svn-id: https://svn.apache.org/repos/asf/incubator/odf/trunk@1727634 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/generator/schema2template/pom.xml b/generator/schema2template/pom.xml
index f21f0c3..250e761 100644
--- a/generator/schema2template/pom.xml
+++ b/generator/schema2template/pom.xml
@@ -123,7 +123,7 @@
 						<exclude>src/main/resources/examples/odf/odf-schemas/*.rng</exclude>
                     </excludes>
                 </configuration>
-            </plugin>
+            </plugin><!--
             <plugin>
       			<groupId>org.codehaus.mojo</groupId>
       			<artifactId>wagon-maven-plugin</artifactId>
@@ -189,7 +189,7 @@
             				<toDir>${project.build.directory}/odf-schemas</toDir>
           				</configuration>
         			</execution>
-                    <!-- Disabled due to a security exception on Apache servers, when downloading from that OASIS host
+                    <!- Disabled due to a security exception on Apache servers, when downloading from that OASIS host
                     Error handling resource: sun.security.validator.ValidatorException: 
                         PKIX path building failed: 
                             sun.security.provider.certpath.SunCertPathBuilderException: 
@@ -217,9 +217,9 @@
             				<fromFile>OpenDocument-strict-schema-v1.0-os.rng</fromFile>
             				<toDir>${project.build.directory}/odf-schemas</toDir>
           				</configuration>
-        			</execution>-->
+        			</execution>
       			</executions>
-    		</plugin>
+    		</plugin>-->
 		</plugins>
 	</build>
 	<!-- <distributionManagement>
diff --git a/generator/schema2template/src/main/java/schema2template/example/odf/OdfHelper.java b/generator/schema2template/src/main/java/schema2template/example/odf/OdfHelper.java
index 8dfc15f..494d77c 100644
--- a/generator/schema2template/src/main/java/schema2template/example/odf/OdfHelper.java
+++ b/generator/schema2template/src/main/java/schema2template/example/odf/OdfHelper.java
@@ -140,10 +140,10 @@
 		odfPythonResourceDir = TEST_INPUT_ROOT + File.separator + "odfdom-python";
 		odfReferenceResourceDir = TEST_INPUT_ROOT + File.separator + "odf-reference";
         odfSchemaResourceDir = TEST_INPUT_ROOT + File.separator + "odf-schemas";
-		odf12SignatureRngFile = INPUT_ROOT + File.separator + ODF12_SIGNATURE_RNG_FILE_NAME;
-		odf12ManifestRngFile = INPUT_ROOT + File.separator + ODF12_MANIFEST_RNG_FILE_NAME;
-		odf12RngFile = INPUT_ROOT + File.separator + ODF12_RNG_FILE_NAME;
-		odf11RngFile = INPUT_ROOT + File.separator + ODF11_RNG_FILE_NAME;
+		odf12SignatureRngFile = odfSchemaResourceDir + File.separator + ODF12_SIGNATURE_RNG_FILE_NAME;
+		odf12ManifestRngFile = odfSchemaResourceDir + File.separator + ODF12_MANIFEST_RNG_FILE_NAME;
+		odf12RngFile = odfSchemaResourceDir + File.separator + ODF12_RNG_FILE_NAME;
+		odf11RngFile = odfSchemaResourceDir + File.separator + ODF11_RNG_FILE_NAME;
 		odf10RngFile = odfSchemaResourceDir + File.separator + ODF10_RNG_FILE_NAME;
 		outputRoot = "target";
 		mConfigFile = TEST_INPUT_ROOT + File.separator + "config.xml";
diff --git a/generator/schema2template/src/main/resources/examples/odf/odf-schemas/OpenDocument-manifest-schema-v1.0-os.rng b/generator/schema2template/src/main/resources/examples/odf/odf-schemas/OpenDocument-manifest-schema-v1.0-os.rng
new file mode 100644
index 0000000..97fe580
--- /dev/null
+++ b/generator/schema2template/src/main/resources/examples/odf/odf-schemas/OpenDocument-manifest-schema-v1.0-os.rng
@@ -0,0 +1,111 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    OASIS OpenDocument v1.0
+    OASIS standard, 1 May 2005
+    Relax-NG Manifest Schema
+
+    $Id$
+
+    © 2002-2005 OASIS Open
+    © 1999-2005 Sun Microsystems, Inc.
+-->
+
+<grammar 
+    xmlns="http://relaxng.org/ns/structure/1.0"
+
+    datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"
+
+    xmlns:manifest="urn:oasis:names:tc:opendocument:xmlns:manifest:1.0">
+<define name="manifest">
+    <element name="manifest:manifest">
+        <oneOrMore>
+            <ref name="file-entry"/>
+        </oneOrMore>
+    </element>
+</define>
+
+<start>
+    <choice>
+        <ref name="manifest"/>
+    </choice>
+</start>
+<define name="file-entry">
+    <element name="manifest:file-entry">
+        <ref name="file-entry-attlist"/>
+        <optional>
+            <ref name="encryption-data"/>
+        </optional>
+    </element>
+</define>
+<define name="file-entry-attlist" combine="interleave">
+    <attribute name="manifest:full-path">
+        <data type="string"/>
+    </attribute>
+</define>
+<define name="file-entry-attlist" combine="interleave">
+    <optional>
+        <attribute name="manifest:size">
+            <data type="nonNegativeInteger"/>
+        </attribute>
+    </optional>
+</define>
+<define name="file-entry-attlist" combine="interleave">
+    <attribute name="manifest:media-type">
+        <data type="string"/>
+    </attribute>
+</define>
+<define name="encryption-data">
+    <element name="manifest:encryption-data">
+        <ref name="encryption-data-attlist"/>
+        <ref name="algorithm"/>
+        <ref name="key-derivation"/>
+    </element>
+</define>
+<define name="encryption-data-attlist" combine="interleave">
+    <attribute name="manifest:checksum-type">
+        <data type="string"/>
+    </attribute>
+</define>
+<define name="encryption-data-attlist" combine="interleave">
+    <attribute name="manifest:checksum">
+        <data type="base64Binary"/>
+    </attribute>
+</define>
+<define name="algorithm">
+    <element name="manifest:algorithm">
+        <ref name="algorithm-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="algorithm-attlist" combine="interleave">
+    <attribute name="manifest:algorithm-name">
+        <data type="string"/>
+    </attribute>
+</define>
+<define name="algorithm-attlist" combine="interleave">
+    <attribute name="manifest:initialisation-vector">
+        <data type="base64Binary"/>
+    </attribute>
+</define>
+<define name="key-derivation">
+    <element name="manifest:key-derivation">
+        <ref name="key-derivation-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="key-derivation-attlist" combine="interleave">
+    <attribute name="manifest:key-derivation-name">
+        <data type="string"/>
+    </attribute>
+</define>
+<define name="key-derivation-attlist" combine="interleave">
+    <attribute name="manifest:salt">
+        <data type="base64Binary"/>
+    </attribute>
+</define>
+<define name="key-derivation-attlist" combine="interleave">
+    <attribute name="manifest:iteration-count">
+            <data type="nonNegativeInteger"/>
+        </attribute>
+</define>
+</grammar>
diff --git a/generator/schema2template/src/main/resources/examples/odf/odf-schemas/OpenDocument-manifest-schema-v1.1.rng b/generator/schema2template/src/main/resources/examples/odf/odf-schemas/OpenDocument-manifest-schema-v1.1.rng
new file mode 100644
index 0000000..4082d4b
--- /dev/null
+++ b/generator/schema2template/src/main/resources/examples/odf/odf-schemas/OpenDocument-manifest-schema-v1.1.rng
@@ -0,0 +1,111 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    OASIS OpenDocument v1.1
+    OASIS Standard, 1 Feb 2007
+    Relax-NG Manifest Schema
+
+    $Id$
+
+    © 2002-2007 OASIS Open
+    © 1999-2007 Sun Microsystems, Inc.
+-->
+
+<grammar 
+    xmlns="http://relaxng.org/ns/structure/1.0"
+
+    datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"
+
+    xmlns:manifest="urn:oasis:names:tc:opendocument:xmlns:manifest:1.0">
+<define name="manifest">
+    <element name="manifest:manifest">
+        <oneOrMore>
+            <ref name="file-entry"/>
+        </oneOrMore>
+    </element>
+</define>
+
+<start>
+    <choice>
+        <ref name="manifest"/>
+    </choice>
+</start>
+<define name="file-entry">
+    <element name="manifest:file-entry">
+        <ref name="file-entry-attlist"/>
+        <optional>
+            <ref name="encryption-data"/>
+        </optional>
+    </element>
+</define>
+<define name="file-entry-attlist" combine="interleave">
+    <attribute name="manifest:full-path">
+        <data type="string"/>
+    </attribute>
+</define>
+<define name="file-entry-attlist" combine="interleave">
+    <optional>
+        <attribute name="manifest:size">
+            <data type="nonNegativeInteger"/>
+        </attribute>
+    </optional>
+</define>
+<define name="file-entry-attlist" combine="interleave">
+    <attribute name="manifest:media-type">
+        <data type="string"/>
+    </attribute>
+</define>
+<define name="encryption-data">
+    <element name="manifest:encryption-data">
+        <ref name="encryption-data-attlist"/>
+        <ref name="algorithm"/>
+        <ref name="key-derivation"/>
+    </element>
+</define>
+<define name="encryption-data-attlist" combine="interleave">
+    <attribute name="manifest:checksum-type">
+        <data type="string"/>
+    </attribute>
+</define>
+<define name="encryption-data-attlist" combine="interleave">
+    <attribute name="manifest:checksum">
+        <data type="base64Binary"/>
+    </attribute>
+</define>
+<define name="algorithm">
+    <element name="manifest:algorithm">
+        <ref name="algorithm-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="algorithm-attlist" combine="interleave">
+    <attribute name="manifest:algorithm-name">
+        <data type="string"/>
+    </attribute>
+</define>
+<define name="algorithm-attlist" combine="interleave">
+    <attribute name="manifest:initialisation-vector">
+        <data type="base64Binary"/>
+    </attribute>
+</define>
+<define name="key-derivation">
+    <element name="manifest:key-derivation">
+        <ref name="key-derivation-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="key-derivation-attlist" combine="interleave">
+    <attribute name="manifest:key-derivation-name">
+        <data type="string"/>
+    </attribute>
+</define>
+<define name="key-derivation-attlist" combine="interleave">
+    <attribute name="manifest:salt">
+        <data type="base64Binary"/>
+    </attribute>
+</define>
+<define name="key-derivation-attlist" combine="interleave">
+    <attribute name="manifest:iteration-count">
+            <data type="nonNegativeInteger"/>
+        </attribute>
+</define>
+</grammar>
diff --git a/generator/schema2template/src/main/resources/examples/odf/odf-schemas/OpenDocument-schema-v1.1.rng b/generator/schema2template/src/main/resources/examples/odf/odf-schemas/OpenDocument-schema-v1.1.rng
new file mode 100644
index 0000000..3ba6a68
--- /dev/null
+++ b/generator/schema2template/src/main/resources/examples/odf/odf-schemas/OpenDocument-schema-v1.1.rng
@@ -0,0 +1,17891 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    OASIS OpenDocument v1.1
+    OASIS Standard, 1 Feb 2007
+    Relax-NG Schema
+
+    $Id$
+
+    © 2002-2007 OASIS Open
+    © 1999-2007 Sun Microsystems, Inc.
+-->
+
+<grammar
+    xmlns="http://relaxng.org/ns/structure/1.0"
+    xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
+
+    datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"
+
+    xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0"
+    xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0"
+    xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0"
+    xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
+    xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0"
+    xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"
+    xmlns:presentation="urn:oasis:names:tc:opendocument:xmlns:presentation:1.0"
+    xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0"
+    xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0"
+    xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0"
+    xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0"
+    xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0"
+    xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0"
+    xmlns:anim="urn:oasis:names:tc:opendocument:xmlns:animation:1.0"
+
+    xmlns:dc="http://purl.org/dc/elements/1.1/"
+    xmlns:xlink="http://www.w3.org/1999/xlink"
+    xmlns:math="http://www.w3.org/1998/Math/MathML"
+    xmlns:xforms="http://www.w3.org/2002/xforms"
+
+    xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0"
+    xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0"
+    xmlns:smil="urn:oasis:names:tc:opendocument:xmlns:smil-compatible:1.0"
+>
+<define name="office-process-content">
+    <optional>
+        <attribute name="office:process-content" a:defaultValue="true">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<start>
+    <choice>
+        <ref name="office-document"/>
+        <ref name="office-document-content"/>
+        <ref name="office-document-styles"/>
+        <ref name="office-document-meta"/>
+        <ref name="office-document-settings"/>
+    </choice>
+</start>
+<define name="office-document">
+    <element name="office:document">
+        <ref name="office-document-attrs"/>
+        <ref name="office-document-common-attrs"/>
+        <ref name="office-meta"/>
+        <ref name="office-settings"/>
+        <ref name="office-scripts"/>
+        <ref name="office-font-face-decls"/>
+        <ref name="office-styles"/>
+        <ref name="office-automatic-styles"/>
+        <ref name="office-master-styles"/>
+        <ref name="office-body"/>
+    </element>
+</define>
+<define name="office-document-content">
+    <element name="office:document-content">
+        <ref name="office-document-common-attrs"/>
+        <ref name="office-scripts"/>
+        <ref name="office-font-face-decls"/>
+        <ref name="office-automatic-styles"/>
+        <ref name="office-body"/>
+    </element>
+</define>
+<define name="office-document-styles">
+    <element name="office:document-styles">
+        <ref name="office-document-common-attrs"/>
+        <ref name="office-font-face-decls"/>
+        <ref name="office-styles"/>
+        <ref name="office-automatic-styles"/>
+        <ref name="office-master-styles"/>
+    </element>
+</define>
+<define name="office-document-meta">
+    <element name="office:document-meta">
+        <ref name="office-document-common-attrs"/>
+        <ref name="office-meta"/>
+    </element>
+</define>
+<define name="office-document-settings">
+    <element name="office:document-settings">
+        <ref name="office-document-common-attrs"/>
+        <ref name="office-settings"/>
+    </element>
+</define>
+<define name="office-document-common-attrs" combine="interleave">
+    <optional>
+        <attribute name="office:version">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="office-document-attrs" combine="interleave">
+    <attribute name="office:mimetype">
+        <ref name="string"/>
+    </attribute>
+</define>
+<define name="office-meta">
+    <optional>
+        <element name="office:meta">
+            <ref name="office-meta-content"/>
+        </element>
+    </optional>
+</define>
+
+<define name="office-meta-content">
+    <ref name="anyElements"/>
+</define>
+
+<define name="office-meta-content-strict">
+    <zeroOrMore>
+        <ref name="office-meta-data"/>
+    </zeroOrMore>
+</define>
+<define name="office-body">
+    <element name="office:body">
+        <ref name="office-body-content"/>
+    </element>
+</define>
+<define name="office-body-content" combine="choice">
+    <element name="office:text">
+        <ref name="office-text-attlist"/>
+        <ref name="office-text-content-prelude"/>
+        <zeroOrMore>
+            <ref name="office-text-content-main"/>
+        </zeroOrMore>
+        <ref name="office-text-content-epilogue"/>
+    </element>
+</define>
+<define name="office-text-content-prelude">
+    <ref name="office-forms"/>
+    <ref name="text-tracked-changes"/>
+    <ref name="text-decls"/>
+    <ref name="table-decls"/>
+</define>
+<define name="office-text-content-main">
+    <choice>
+        <zeroOrMore>
+            <ref name="text-content"/>
+        </zeroOrMore>
+        <group>
+            <ref name="text-page-sequence"/>
+            <zeroOrMore>
+                <choice>
+                    <ref name="draw-a"/>
+                    <ref name="shape"/>
+                </choice>
+            </zeroOrMore>
+        </group>
+    </choice>
+</define>
+
+<define name="text-content">
+    <choice>
+        <ref name="text-h"/>
+        <ref name="text-p"/>
+        <ref name="text-list"/>
+        <ref name="text-numbered-paragraph"/>
+        <ref name="table-table"/>
+        <ref name="draw-a"/>
+        <ref name="text-section"/>
+        <ref name="text-soft-page-break"/> 
+        <ref name="text-table-of-content"/>
+        <ref name="text-illustration-index"/>
+        <ref name="text-table-index"/>
+        <ref name="text-object-index"/>
+        <ref name="text-user-index"/>
+        <ref name="text-alphabetical-index"/>
+        <ref name="text-bibliography"/>
+        <ref name="shape"/>
+        <ref name="change-marks"/>
+    </choice>
+</define>
+<define name="office-text-content-epilogue">
+    <ref name="table-functions"/>
+</define>
+<define name="office-text-attlist" combine="interleave">
+    <optional>
+        <attribute name="text:global" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="office-text-attlist" combine="interleave">
+    <optional>
+        <attribute name="text:use-soft-page-breaks" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="office-body-content" combine="choice">
+    <element name="office:drawing">
+        <ref name="office-drawing-attlist"/>
+        <ref name="office-drawing-content-prelude"/>
+        <ref name="office-drawing-content-main"/>
+        <ref name="office-drawing-content-epilogue"/>
+    </element>
+</define>
+
+<define name="office-drawing-attlist">
+    <empty/>
+</define>
+<define name="office-drawing-content-prelude">
+    <ref name="text-decls"/>
+    <ref name="table-decls"/>
+</define>
+<define name="office-drawing-content-main">
+    <zeroOrMore>
+        <ref name="draw-page"/>
+    </zeroOrMore>
+</define>
+<define name="office-drawing-content-epilogue">
+    <ref name="table-functions"/>
+</define>
+<define name="office-body-content" combine="choice">
+    <element name="office:presentation">
+        <ref name="office-presentation-attlist"/>
+        <ref name="office-presentation-content-prelude"/>
+        <ref name="office-presentation-content-main"/>
+        <ref name="office-presentation-content-epilogue"/>
+    </element>
+</define>
+
+<define name="office-presentation-attlist">
+    <empty/>
+</define>
+<define name="office-presentation-content-prelude">
+    <ref name="text-decls"/>
+    <ref name="table-decls"/>
+    <ref name="presentation-decls"/>
+</define>
+<define name="office-presentation-content-main">
+    <zeroOrMore>
+        <ref name="draw-page"/>
+    </zeroOrMore>
+</define>
+<define name="office-presentation-content-epilogue">
+    <ref name="presentation-settings"/>
+    <ref name="table-functions"/>
+</define>
+<define name="office-body-content" combine="choice">
+    <element name="office:spreadsheet">
+        <ref name="office-spreadsheet-attlist"/>
+        <ref name="office-spreadsheet-content-prelude"/>
+        <ref name="office-spreadsheet-content-main"/>
+        <ref name="office-spreadsheet-content-epilogue"/>
+    </element>
+</define>
+<define name="office-spreadsheet-content-prelude">
+    <optional>
+        <ref name="table-tracked-changes"/>    
+    </optional>
+    <ref name="text-decls"/>
+    <ref name="table-decls"/>
+</define>
+
+<define name="table-decls">
+    <optional>
+        <ref name="table-calculation-settings"/>    
+    </optional>
+    <optional>
+        <ref name="table-content-validations"/>    
+    </optional>
+    <optional>
+        <ref name="table-label-ranges"/>    
+    </optional>
+</define>
+<define name="office-spreadsheet-content-main">
+    <zeroOrMore>
+        <ref name="table-table"/>
+    </zeroOrMore>
+</define>
+<define name="office-spreadsheet-content-epilogue">
+    <ref name="table-functions"/>    
+</define>
+
+<define name="table-functions">
+    <optional>
+        <ref name="table-named-expressions"/>    
+    </optional>
+    <optional>
+        <ref name="table-database-ranges"/>    
+    </optional>
+    <optional>
+        <ref name="table-data-pilot-tables"/>    
+    </optional>
+    <optional>
+        <ref name="table-consolidation"/>    
+    </optional>
+    <optional>
+        <ref name="table-dde-links"/>    
+    </optional>
+</define>
+<define name="office-body-content" combine="choice">
+    <element name="office:chart">
+        <ref name="office-chart-attlist"/>
+        <ref name="office-chart-content-prelude"/>
+        <ref name="office-chart-content-main"/>
+        <ref name="office-chart-content-epilogue"/>
+    </element>
+</define>
+
+<define name="office-chart-attlist">
+    <empty/>
+</define>
+<define name="office-chart-content-prelude">
+    <ref name="text-decls"/>
+    <ref name="table-decls"/>
+</define>
+<define name="office-chart-content-main">
+    <ref name="chart-chart"/>
+</define>
+<define name="office-chart-content-epilogue">
+    <ref name="table-functions"/>    
+</define>
+<define name="office-body-content" combine="choice">
+    <element name="office:image">
+        <ref name="office-image-attlist"/>
+        <ref name="office-image-content-prelude"/>
+        <ref name="office-image-content-main"/>
+        <ref name="office-image-content-epilogue"/>
+    </element>
+</define>
+
+<define name="office-image-attlist">
+    <empty/>
+</define>
+<define name="office-image-content-prelude">
+    <empty/>
+</define>
+<define name="office-image-content-main">
+    <ref name="draw-frame"/>
+</define>
+<define name="office-image-content-epilogue">
+    <empty/>
+</define>
+<define name="office-settings">
+    <optional>
+        <element name="office:settings">
+            <oneOrMore>
+                <ref name="config-config-item-set"/>
+            </oneOrMore>
+        </element>
+    </optional>
+</define>
+<define name="config-config-item-set">
+    <element name="config:config-item-set">
+        <ref name="config-config-item-set-attlist"/>
+        <ref name="config-items"/>
+    </element>
+</define>
+
+<define name="config-items">
+    <oneOrMore>
+        <choice>
+            <ref name="config-config-item"/>
+            <ref name="config-config-item-set"/>
+            <ref name="config-config-item-map-named"/>
+            <ref name="config-config-item-map-indexed"/>
+        </choice>
+    </oneOrMore>
+</define>
+<define name="config-config-item-set-attlist" combine="interleave">
+    <attribute name="config:name">
+        <ref name="string"/>
+    </attribute>
+</define>
+<define name="config-config-item">
+    <element name="config:config-item">
+        <ref name="config-config-item-attlist"/>
+        <text/>
+    </element>
+</define>
+<define name="config-config-item-attlist" combine="interleave">
+    <attribute name="config:name">
+        <ref name="string"/>
+    </attribute>
+</define>
+<define name="config-config-item-attlist" combine="interleave">
+    <attribute name="config:type">
+        <choice>
+            <value>boolean</value>
+            <value>short</value>
+            <value>int</value>
+            <value>long</value>
+            <value>double</value>
+            <value>string</value>
+            <value>datetime</value>
+            <value>base64Binary</value>
+        </choice>
+    </attribute>
+</define>
+<define name="config-config-item-map-indexed">
+    <element name="config:config-item-map-indexed">
+        <ref name="config-config-item-map-indexed-attlist"/>
+        <oneOrMore>
+            <ref name="config-config-item-map-entry"/>
+        </oneOrMore>
+    </element>
+</define>
+<define name="config-config-item-map-indexed-attlist" combine="interleave">
+    <attribute name="config:name">
+        <ref name="string"/>
+    </attribute>
+</define>
+<define name="config-config-item-map-entry">
+    <element name="config:config-item-map-entry">
+        <ref name="config-config-item-map-entry-attlist"/>
+        <ref name="config-items"/>
+    </element>
+</define>
+<define name="config-config-item-map-entry-attlist" combine="interleave">
+    <optional>
+        <attribute name="config:name">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="config-config-item-map-named">
+    <element name="config:config-item-map-named">
+        <ref name="config-config-item-map-named-attlist"/>
+        <oneOrMore>
+            <ref name="config-config-item-map-entry"/>
+        </oneOrMore>
+    </element>
+</define>
+<define name="config-config-item-map-named-attlist" combine="interleave">
+    <attribute name="config:name">
+        <ref name="string"/>
+    </attribute>
+</define>
+<define name="office-scripts">
+    <optional>
+        <element name="office:scripts">
+            <zeroOrMore>
+                <ref name="office-script"/>
+            </zeroOrMore>
+            <optional>
+                <ref name="office-event-listeners"/>
+            </optional>
+        </element>
+    </optional>
+</define>
+<define name="office-script">
+    <element name="office:script">
+        <ref name="office-script-attlist"/>
+        <mixed>
+            <ref name="anyElements"/>
+        </mixed>
+    </element>
+</define>
+<define name="office-script-attlist">
+    <attribute name="script:language">
+        <ref name="string"/>
+    </attribute>
+</define>
+<define name="office-font-face-decls">
+    <optional>
+        <element name="office:font-face-decls">
+            <zeroOrMore>
+                <ref name="style-font-face"/>
+            </zeroOrMore>
+        </element>
+    </optional>
+</define>
+<define name="office-styles">
+    <optional>
+        <element name="office:styles">
+            <interleave>
+                <ref name="styles"/>
+                <zeroOrMore>
+                    <ref name="style-default-style"/>
+                </zeroOrMore>
+                <optional>
+                    <ref name="text-outline-style"/>
+                </optional>
+                <zeroOrMore>
+                    <ref name="text-notes-configuration"/>
+                </zeroOrMore>
+                <optional>
+                    <ref name="text-bibliography-configuration"/>
+                </optional>
+                <optional>
+                    <ref name="text-linenumbering-configuration"/>
+                </optional>
+                <zeroOrMore>
+                    <ref name="draw-gradient"/>
+                </zeroOrMore>
+                <zeroOrMore>
+                    <ref name="svg-linearGradient"/>
+                </zeroOrMore>
+                <zeroOrMore>
+                    <ref name="svg-radialGradient"/>
+                </zeroOrMore>
+                <zeroOrMore>
+                    <ref name="draw-hatch"/>
+                </zeroOrMore>
+                <zeroOrMore>
+                    <ref name="draw-fill-image"/>
+                </zeroOrMore>
+                <zeroOrMore>
+                    <ref name="draw-marker"/>
+                </zeroOrMore>
+                <zeroOrMore>
+                    <ref name="draw-stroke-dash"/>
+                </zeroOrMore>
+                <zeroOrMore>
+                    <ref name="draw-opacity"/>
+                </zeroOrMore>
+                <zeroOrMore>
+                    <ref name="style-presentation-page-layout"/>
+                </zeroOrMore>
+            </interleave>
+        </element>
+    </optional>
+</define>
+<define name="office-automatic-styles">
+    <optional>
+        <element name="office:automatic-styles">
+            <interleave>
+                <ref name="styles"/>
+                <zeroOrMore>
+                    <ref name="style-page-layout"/>
+                </zeroOrMore>
+            </interleave>
+        </element>
+    </optional>
+</define>
+<define name="office-master-styles">
+    <optional>
+        <element name="office:master-styles">
+            <interleave>
+                <zeroOrMore>
+                    <ref name="style-master-page"/>
+                </zeroOrMore>
+                <optional>
+                    <ref name="style-handout-master"/>
+                </optional>
+                <optional>
+                    <ref name="draw-layer-set"/>
+                </optional>
+            </interleave>
+        </element>
+    </optional>
+</define>
+
+<define name="styles">
+    <interleave>
+        <zeroOrMore>
+            <ref name="style-style"/>
+        </zeroOrMore>
+        <zeroOrMore>
+            <ref name="text-list-style"/>
+        </zeroOrMore>
+        <zeroOrMore>
+            <ref name="number-number-style"/>
+        </zeroOrMore>
+        <zeroOrMore>
+            <ref name="number-currency-style"/>
+        </zeroOrMore>
+        <zeroOrMore>
+            <ref name="number-percentage-style"/>
+        </zeroOrMore>
+        <zeroOrMore>
+            <ref name="number-date-style"/>
+        </zeroOrMore>
+        <zeroOrMore>
+            <ref name="number-time-style"/>
+        </zeroOrMore>
+        <zeroOrMore>
+            <ref name="number-boolean-style"/>
+        </zeroOrMore>
+        <zeroOrMore>
+            <ref name="number-text-style"/>
+        </zeroOrMore>
+    </interleave>
+</define>
+<define name="office-meta-data" combine="choice">
+    <element name="meta:generator">
+        <ref name="string"/>
+    </element>
+</define>
+<define name="office-meta-data" combine="choice">
+    <element name="dc:title">
+        <ref name="string"/>
+    </element>
+</define>
+<define name="office-meta-data" combine="choice">
+    <element name="dc:description">
+        <ref name="string"/>
+    </element>
+</define>
+<define name="office-meta-data" combine="choice">
+    <element name="dc:subject">
+        <ref name="string"/>
+    </element>
+</define>
+<define name="office-meta-data" combine="choice">
+    <element name="meta:keyword">
+        <ref name="string"/>
+    </element>
+</define>
+<define name="office-meta-data" combine="choice">
+    <element name="meta:initial-creator">
+        <ref name="string"/>
+    </element>
+</define>
+<define name="office-meta-data" combine="choice">
+    <ref name="dc-creator"/>
+</define>
+<define name="dc-creator">
+    <element name="dc:creator">
+        <ref name="string"/>
+    </element>
+</define>
+<define name="office-meta-data" combine="choice">
+    <element name="meta:printed-by">
+        <ref name="string"/>
+    </element>
+</define>
+<define name="office-meta-data" combine="choice">
+    <element name="meta:creation-date">
+        <ref name="dateTime"/>
+    </element>
+</define>
+<define name="office-meta-data" combine="choice">
+    <ref name="dc-date"/>
+</define>
+<define name="dc-date">
+    <element name="dc:date">
+        <ref name="dateTime"/>
+    </element>
+</define>
+<define name="office-meta-data" combine="choice">
+    <element name="meta:print-date">
+        <ref name="dateTime"/>
+    </element>
+</define>
+<define name="office-meta-data" combine="choice">
+    <element name="meta:template">
+        <attribute name="xlink:href">
+            <ref name="anyURI"/>
+        </attribute>
+        <optional>
+            <attribute name="xlink:type" a:defaultValue="simple">
+                <value>simple</value>
+            </attribute>
+        </optional>
+        <optional>
+            <attribute name="xlink:actuate" a:defaultValue="onRequest">
+                <value>onRequest</value>
+            </attribute>
+        </optional>
+        <optional>
+            <attribute name="xlink:title">
+                <ref name="string"/>
+            </attribute>
+        </optional>
+        <optional>
+            <attribute name="meta:date">
+                <ref name="dateTime"/>
+            </attribute>
+        </optional>
+    </element>
+</define>
+<define name="office-meta-data" combine="choice">
+    <element name="meta:auto-reload">
+        <optional>
+            <attribute name="xlink:type" a:defaultValue="simple">
+                <value>simple</value>
+            </attribute>
+        </optional>
+        <optional>
+            <attribute name="xlink:show" a:defaultValue="replace">
+                <value>replace</value>
+            </attribute>
+        </optional>
+        <optional>
+            <attribute name="xlink:actuate" a:defaultValue="onLoad">
+                <value>onLoad</value>
+            </attribute>
+        </optional>
+        <optional>
+            <attribute name="xlink:href">
+                <ref name="anyURI"/>
+            </attribute>
+        </optional>
+        <optional>
+            <attribute name="meta:delay">
+                <ref name="duration"/>
+            </attribute>
+        </optional>
+    </element>
+</define>
+<define name="office-meta-data" combine="choice">
+    <element name="meta:hyperlink-behaviour">
+        <optional>
+            <attribute name="office:target-frame-name">
+                <ref name="targetFrameName"/>
+            </attribute>
+        </optional>
+        <optional>
+            <attribute name="xlink:show">
+                <choice>
+                    <value>new</value>
+                    <value>replace</value>
+                </choice>
+            </attribute>
+        </optional>
+    </element>
+</define>
+<define name="office-meta-data" combine="choice">
+    <element name="dc:language">
+        <ref name="language"/>
+    </element>
+</define>
+<define name="office-meta-data" combine="choice">
+    <element name="meta:editing-cycles">
+        <ref name="nonNegativeInteger"/>
+    </element>
+</define>
+<define name="office-meta-data" combine="choice">
+    <element name="meta:editing-duration">
+        <ref name="duration"/>
+    </element>
+</define>
+<define name="office-meta-data" combine="choice">
+    <element name="meta:document-statistic">
+        <optional>
+            <attribute name="meta:page-count">
+                <ref name="nonNegativeInteger"/>
+            </attribute>
+        </optional>
+        <optional>
+            <attribute name="meta:table-count">
+                <ref name="nonNegativeInteger"/>
+            </attribute>
+        </optional>
+        <optional>
+            <attribute name="meta:draw-count">
+                <ref name="nonNegativeInteger"/>
+            </attribute>
+        </optional>
+        <optional>
+            <attribute name="meta:image-count">
+                <ref name="nonNegativeInteger"/>
+            </attribute>
+        </optional>
+        <optional>
+            <attribute name="meta:ole-object-count">
+                <ref name="nonNegativeInteger"/>
+            </attribute>
+        </optional>
+        <optional>
+            <attribute name="meta:object-count">
+                <ref name="nonNegativeInteger"/>
+            </attribute>
+        </optional>
+        <optional>
+            <attribute name="meta:paragraph-count">
+                <ref name="nonNegativeInteger"/>
+            </attribute>
+        </optional>
+        <optional>
+            <attribute name="meta:word-count">
+                <ref name="nonNegativeInteger"/>
+            </attribute>
+        </optional>
+        <optional>
+            <attribute name="meta:character-count">
+                <ref name="nonNegativeInteger"/>
+            </attribute>
+        </optional>
+        <optional>
+            <attribute name="frame-count">
+                <ref name="nonNegativeInteger"/>
+            </attribute>
+        </optional>
+        <optional>
+            <attribute name="sentence-count">
+                <ref name="nonNegativeInteger"/>
+            </attribute>
+        </optional>
+        <optional>
+            <attribute name="syllable-count">
+                <ref name="nonNegativeInteger"/>
+            </attribute>
+        </optional>
+        <optional>
+            <attribute name="non-whitespace-character-count">
+                <ref name="nonNegativeInteger"/>
+            </attribute>
+        </optional>
+        <optional>
+            <attribute name="meta:row-count">
+                <ref name="nonNegativeInteger"/>
+            </attribute>
+        </optional>
+        <optional>
+            <attribute name="meta:cell-count">
+                <ref name="nonNegativeInteger"/>
+            </attribute>
+        </optional>
+    </element>
+</define>
+<define name="office-meta-data" combine="choice">
+    <element name="meta:user-defined">
+        <attribute name="meta:name">
+            <ref name="string"/>
+        </attribute>
+        <choice>
+            <group>
+                <attribute name="meta:value-type">
+                    <value>float</value>
+                </attribute>
+                <ref name="double"/>
+            </group>
+            <group>
+                <attribute name="meta:value-type">
+                    <value>date</value>
+                </attribute>
+                <ref name="dateOrDateTime"/>
+            </group>
+            <group>
+                <attribute name="meta:value-type">
+                    <value>time</value>
+                </attribute>
+                <ref name="duration"/>
+            </group>
+            <group>
+                <attribute name="meta:value-type">
+                    <value>boolean</value>
+                </attribute>
+                <ref name="boolean"/>
+            </group>
+            <group>
+                <attribute name="meta:value-type">
+                    <value>string</value>
+                </attribute>
+                <ref name="string"/>
+            </group>
+            <text/>
+        </choice>
+    </element>
+</define>
+<define name="text-h">
+    <element name="text:h">
+        <ref name="heading-attrs"/>
+        <ref name="paragraph-attrs"/>
+        <optional>
+            <ref name="text-number"/>
+        </optional>
+        <zeroOrMore>
+            <ref name="paragraph-content"/>
+        </zeroOrMore>
+    </element>
+</define>
+<define name="heading-attrs" combine="interleave">
+    <attribute name="text:outline-level">
+        <ref name="positiveInteger"/>
+    </attribute>
+</define>
+<define name="heading-attrs" combine="interleave">
+    <optional>
+        <attribute name="text:restart-numbering" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="heading-attrs" combine="interleave">
+    <optional>
+        <attribute name="text:start-value">
+            <ref name="nonNegativeInteger"/>
+        </attribute>
+    </optional>
+</define>
+<define name="heading-attrs" combine="interleave">
+    <optional>
+        <attribute name="text:is-list-header" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-number">
+    <element name="text:number">
+        <ref name="string"/>
+    </element>
+</define>
+<define name="text-p">
+    <element name="text:p">
+        <ref name="paragraph-attrs"/>
+        <zeroOrMore>
+            <ref name="paragraph-content"/>
+        </zeroOrMore>
+    </element>
+</define>
+<define name="paragraph-attrs">
+    <optional>
+        <attribute name="text:style-name">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="text:class-names">
+            <ref name="styleNameRefs"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="text:cond-style-name">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+<define name="paragraph-attrs" combine="interleave">
+    <optional>
+        <ref name="text-id"/>
+    </optional>
+</define>
+<define name="text-page-sequence">
+    <element name="text:page-sequence">
+        <oneOrMore>
+            <ref name="text-page"/>
+        </oneOrMore>
+    </element>
+</define>
+<define name="text-page">
+    <element name="text:page">
+        <ref name="text-page-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="text-page-attlist">
+    <attribute name="text:master-page-name">
+        <ref name="styleNameRef"/>
+    </attribute>
+</define>
+<define name="text-list">
+    <element name="text:list">
+        <ref name="text-list-attr"/>
+        <optional>
+            <ref name="text-list-header"/>
+        </optional>
+        <zeroOrMore>
+            <ref name="text-list-item"/>
+        </zeroOrMore>
+    </element>
+</define>
+<define name="text-list-attr" combine="interleave">
+    <optional>
+        <attribute name="text:style-name">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-list-attr" combine="interleave">
+    <optional>
+        <attribute name="text:continue-numbering">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-list-item">
+    <element name="text:list-item">
+        <ref name="text-list-item-attr"/>
+        <ref name="text-list-item-content"/>
+    </element>
+</define>
+<define name="text-list-item-content">
+    <optional>
+        <ref name="text-number"/>
+    </optional>
+    <zeroOrMore>
+        <choice>
+            <ref name="text-p"/>
+            <ref name="text-h"/>
+            <ref name="text-list"/>
+            <ref name="text-soft-page-break"/>
+        </choice>
+    </zeroOrMore>
+</define>
+<define name="text-list-item-attr" combine="interleave">
+    <optional>
+        <attribute name="text:start-value">
+            <ref name="nonNegativeInteger"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-list-header">
+    <element name="text:list-header">
+        <ref name="text-list-item-content"/>
+    </element>
+</define>
+<define name="text-numbered-paragraph">
+    <element name="text:numbered-paragraph">
+        <ref name="text-numbered-paragraph-attr"/>
+        <optional>
+            <ref name="text-number"/>
+        </optional>
+        <choice>
+            <ref name="text-p"/>
+            <ref name="text-h"/>
+        </choice>
+    </element>
+</define>
+<define name="text-numbered-paragraph-attr" combine="interleave">
+    <optional>
+        <attribute name="text:level" a:defaultValue="1">
+            <ref name="positiveInteger"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-numbered-paragraph-attr" combine="interleave">
+    <ref name="text-list-attr"/>
+</define>
+<define name="text-numbered-paragraph-attr" combine="interleave">
+    <ref name="text-list-item-attr"/>
+</define>
+<define name="text-section">
+    <element name="text:section">
+        <ref name="text-section-attr"/>
+        <choice>
+            <ref name="text-section-source"/>
+            <ref name="text-section-source-dde"/>
+            <empty/>
+        </choice>
+        <zeroOrMore>
+            <ref name="text-content"/>
+        </zeroOrMore>
+    </element>
+</define>
+<define name="text-section-attr" combine="interleave">
+    <ref name="sectionAttr"/>
+</define>
+<define name="sectionAttr" combine="interleave">
+    <optional>
+        <attribute name="text:style-name">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+<define name="sectionAttr" combine="interleave">
+    <attribute name="text:name">
+        <ref name="string"/>
+    </attribute>
+</define>
+<define name="sectionAttr" combine="interleave">
+    <optional>
+        <attribute name="text:protected">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="sectionAttr" combine="interleave">
+    <optional>
+        <attribute name="text:protection-key">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-section-attr" combine="interleave">
+    <choice>
+        <attribute name="text:display">
+            <choice>
+                <value>true</value>
+                <value>none</value>
+            </choice>
+        </attribute>
+        <group>
+            <attribute name="text:display">
+                <value>condition</value>
+            </attribute>
+            <attribute name="text:condition">
+                <ref name="string"/>
+            </attribute>
+        </group>
+        <empty/>
+    </choice>
+</define>
+<define name="text-section-source">
+    <element name="text:section-source">
+        <ref name="text-section-source-attr"/>
+    </element>
+</define>
+<define name="text-section-source-attr" combine="interleave">
+    <optional>
+        <attribute name="xlink:href">
+            <ref name="anyURI"/>
+        </attribute>
+        <optional>
+            <attribute name="xlink:type" a:defaultValue="simple">
+                <value>simple</value>
+            </attribute>
+        </optional>
+        <optional>
+            <attribute name="xlink:show" a:defaultValue="embed">
+                <value>embed</value>
+            </attribute>
+        </optional>
+    </optional>
+</define>
+<define name="text-section-source-attr" combine="interleave">
+    <optional>
+        <attribute name="text:section-name">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-section-source-attr" combine="interleave">
+    <optional>
+        <attribute name="text:filter-name">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-section-source-dde">
+    <ref name="office-dde-source"/>
+</define>
+<define name="text-tracked-changes">
+    <optional>
+        <element name="text:tracked-changes">
+            <ref name="text-tracked-changes-attr"/>
+            <zeroOrMore>
+                <ref name="text-changed-region"/>
+            </zeroOrMore>
+        </element>
+    </optional>
+</define>
+<define name="text-tracked-changes-attr" combine="interleave">
+    <optional>
+        <attribute name="text:track-changes" a:defaultValue="true">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-changed-region">
+    <element name="text:changed-region">
+        <ref name="text-changed-region-attr"/>
+        <ref name="text-changed-region-content"/>
+    </element>
+</define>
+<define name="text-changed-region-attr" combine="interleave">
+    <attribute name="text:id">
+        <ref name="ID"/>
+    </attribute>
+</define>
+<define name="text-changed-region-content" combine="choice">
+    <element name="text:insertion">
+        <ref name="office-change-info"/>
+    </element>
+</define>
+<define name="text-changed-region-content" combine="choice">
+    <element name="text:deletion">
+        <ref name="office-change-info"/>
+        <zeroOrMore>
+            <ref name="text-content"/>
+        </zeroOrMore>
+    </element>
+</define>
+<define name="text-changed-region-content" combine="choice">
+    <element name="text:format-change">
+        <ref name="office-change-info"/>
+    </element>
+</define>
+<define name="change-marks">
+    <choice>
+        <element name="text:change">
+            <ref name="change-mark-attr"/>
+        </element>
+        <element name="text:change-start">
+            <ref name="change-mark-attr"/>
+        </element>
+        <element name="text:change-end">
+            <ref name="change-mark-attr"/>
+        </element>
+    </choice>
+</define>
+<define name="change-mark-attr">
+    <attribute name="text:change-id">
+        <ref name="IDREF"/>
+    </attribute>
+</define>
+<define name="text-soft-page-break">
+    <element name="text:soft-page-break">
+        <empty/>
+    </element>
+</define>
+<define name="text-decls">
+    <optional>
+        <element name="text:variable-decls">
+            <zeroOrMore>
+                <ref name="text-variable-decl"/>
+            </zeroOrMore>
+        </element>
+    </optional>
+    <optional>
+        <element name="text:sequence-decls">
+            <zeroOrMore>
+                <ref name="text-sequence-decl"/>
+            </zeroOrMore>
+        </element>
+    </optional>
+    <optional>
+        <element name="text:user-field-decls">
+            <zeroOrMore>
+                <ref name="text-user-field-decl"/>
+            </zeroOrMore>
+        </element>
+    </optional>
+    <optional>
+        <element name="text:dde-connection-decls">
+            <zeroOrMore>
+                <ref name="text-dde-connection-decl"/>
+            </zeroOrMore>
+        </element>
+    </optional>
+    <optional>
+        <ref name="text-alphabetical-index-auto-mark-file"/>
+    </optional>
+</define>
+<define name="paragraph-content" combine="choice">
+    <text/>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:s">
+        <optional>
+            <attribute name="text:c">
+                <ref name="nonNegativeInteger"/>
+            </attribute>
+        </optional>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:tab">
+        <ref name="text-tab-attr"/>
+    </element>
+</define>
+<define name="text-tab-attr">
+    <optional>
+        <attribute name="text:tab-ref">
+            <ref name="nonNegativeInteger"/>
+        </attribute>
+    </optional>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:line-break">
+        <empty/>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <ref name="text-soft-page-break"/>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:span">
+        <optional>
+            <attribute name="text:style-name">
+                <ref name="styleNameRef"/>
+            </attribute>
+        </optional>
+        <optional>
+            <attribute name="text:class-names">
+                <ref name="styleNameRefs"/>
+            </attribute>
+        </optional>
+        <zeroOrMore>
+            <ref name="paragraph-content"/>
+        </zeroOrMore>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:a">
+        <ref name="text-a-attlist"/>
+        <optional>
+            <ref name="office-event-listeners"/>
+        </optional>
+        <zeroOrMore>
+            <ref name="paragraph-content"/>
+        </zeroOrMore>
+    </element>
+</define>
+<define name="text-a-attlist" combine="interleave">
+    <optional>
+        <attribute name="office:name">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-a-attlist" combine="interleave">
+    <optional>
+        <attribute name="office:title">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-a-attlist" combine="interleave">
+    <attribute name="xlink:href">
+        <ref name="anyURI"/>
+    </attribute>
+    <optional>
+        <attribute name="xlink:type" a:defaultValue="simple">
+            <value>simple</value>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="xlink:actuate" a:defaultValue="onRequest">
+            <value>onRequest</value>
+        </attribute>
+    </optional>
+</define>
+<define name="text-a-attlist" combine="interleave">
+    <optional>
+        <attribute name="office:target-frame-name">
+            <ref name="targetFrameName"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="xlink:show">
+            <choice>
+                <value>new</value>
+                <value>replace</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="text-a-attlist" combine="interleave">
+    <optional>
+        <attribute name="text:style-name">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="text:visited-style-name">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+<define name="paragraph-content" combine="choice">
+    <choice>
+        <element name="text:bookmark">
+            <attribute name="text:name">
+                <ref name="string"/>
+            </attribute>
+        </element>
+        <element name="text:bookmark-start">
+            <attribute name="text:name">
+                <ref name="string"/>
+            </attribute>
+        </element>
+        <element name="text:bookmark-end">
+            <attribute name="text:name">
+                <ref name="string"/>
+            </attribute>
+        </element>
+    </choice>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:reference-mark">
+        <attribute name="text:name">
+            <ref name="string"/>
+        </attribute>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <choice>
+        <element name="text:reference-mark-start">
+            <attribute name="text:name">
+                <ref name="string"/>
+            </attribute>
+        </element>
+        <element name="text:reference-mark-end">
+            <attribute name="text:name">
+                <ref name="string"/>
+            </attribute>
+        </element>
+    </choice>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:note">
+        <ref name="text-note-class"/>
+        <optional>
+            <attribute name="text:id">
+                <ref name="string"/>
+            </attribute>
+        </optional>
+        <element name="text:note-citation">
+            <optional>
+                <attribute name="text:label">
+                    <ref name="string"/>
+                </attribute>
+            </optional>
+            <text/>
+        </element>
+        <element name="text:note-body">
+            <zeroOrMore>
+                <ref name="text-content"/>
+            </zeroOrMore>
+        </element>
+    </element>
+</define>
+<define name="text-note-class">
+    <attribute name="text:note-class">
+        <choice>
+            <value>footnote</value>
+            <value>endnote</value>
+        </choice>
+    </attribute>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:ruby">
+        <optional>
+            <attribute name="text:style-name">
+                <ref name="styleNameRef"/>
+            </attribute>
+        </optional>
+        <element name="text:ruby-base">
+            <ref name="paragraph-content"/>
+        </element>
+        <element name="text:ruby-text">
+            <optional>
+                <attribute name="text:style-name">
+                    <ref name="styleNameRef"/>
+                </attribute>
+            </optional>
+            <text/>
+        </element>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <ref name="office-annotation"/>
+</define>
+<define name="paragraph-content" combine="choice">
+    <ref name="change-marks"/>
+</define>
+<define name="paragraph-content" combine="choice">
+    <choice>
+        <ref name="shape"/>
+        <ref name="draw-a"/>
+    </choice>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:date">
+        <ref name="text-date-attlist"/>
+        <text/>
+    </element>
+</define>
+<define name="text-date-attlist" combine="interleave">
+    <interleave>
+        <ref name="common-field-fixed-attlist"/>
+        <ref name="common-field-data-style-name-attlist"/>
+    </interleave>
+</define>
+<define name="text-date-attlist" combine="interleave">
+    <optional>
+        <attribute name="text:date-value">
+            <ref name="dateOrDateTime"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-date-attlist" combine="interleave">
+    <optional>
+        <attribute name="text:date-adjust">
+            <ref name="duration"/>
+        </attribute>
+    </optional>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:time">
+        <ref name="text-time-attlist"/>
+        <text/>
+    </element>
+</define>
+<define name="text-time-attlist" combine="interleave">
+    <interleave>
+        <ref name="common-field-fixed-attlist"/>
+        <ref name="common-field-data-style-name-attlist"/>
+    </interleave>
+</define>
+<define name="text-time-attlist" combine="interleave">
+    <optional>
+        <attribute name="text:time-value">
+            <ref name="timeOrDateTime"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-time-attlist" combine="interleave">
+    <optional>
+        <attribute name="text:time-adjust">
+            <ref name="duration"/>
+        </attribute>
+    </optional>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:page-number">
+        <ref name="text-page-number-attlist"/>
+        <text/>
+    </element>
+</define>
+<define name="text-page-number-attlist" combine="interleave">
+    <interleave>
+        <ref name="common-field-num-format-attlist"/>
+        <ref name="common-field-fixed-attlist"/>
+    </interleave>
+</define>
+<define name="text-page-number-attlist" combine="interleave">
+    <optional>
+        <attribute name="text:page-adjust">
+            <ref name="integer"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-page-number-attlist" combine="interleave">
+    <optional>
+        <attribute name="text:select-page">
+            <choice>
+                <value>previous</value>
+                <value>current</value>
+                <value>next</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:page-continuation">
+        <ref name="text-page-continuation-attlist"/>
+        <text/>
+    </element>
+</define>
+<define name="text-page-continuation-attlist" combine="interleave">
+    <attribute name="text:select-page">
+        <choice>
+            <value>previous</value>
+            <value>next</value>
+        </choice>
+    </attribute>
+</define>
+<define name="text-page-continuation-attlist" combine="interleave">
+    <optional>
+        <attribute name="text:string-value">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:sender-firstname">
+        <ref name="common-field-fixed-attlist"/>
+        <text/>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:sender-lastname">
+        <ref name="common-field-fixed-attlist"/>
+        <text/>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:sender-initials">
+        <ref name="common-field-fixed-attlist"/>
+        <text/>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:sender-title">
+        <ref name="common-field-fixed-attlist"/>
+        <text/>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:sender-position">
+        <ref name="common-field-fixed-attlist"/>
+        <text/>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:sender-email">
+        <ref name="common-field-fixed-attlist"/>
+        <text/>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:sender-phone-private">
+        <ref name="common-field-fixed-attlist"/>
+        <text/>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:sender-fax">
+        <ref name="common-field-fixed-attlist"/>
+        <text/>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:sender-company">
+        <ref name="common-field-fixed-attlist"/>
+        <text/>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:sender-phone-work">
+        <ref name="common-field-fixed-attlist"/>
+        <text/>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:sender-street">
+        <ref name="common-field-fixed-attlist"/>
+        <text/>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:sender-city">
+        <ref name="common-field-fixed-attlist"/>
+        <text/>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:sender-postal-code">
+        <ref name="common-field-fixed-attlist"/>
+        <text/>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:sender-country">
+        <ref name="common-field-fixed-attlist"/>
+        <text/>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:sender-state-or-province">
+        <ref name="common-field-fixed-attlist"/>
+        <text/>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:author-name">
+        <ref name="common-field-fixed-attlist"/>
+        <text/>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:author-initials">
+        <ref name="common-field-fixed-attlist"/>
+        <text/>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:chapter">
+        <ref name="text-chapter-attlist"/>
+        <text/>
+    </element>
+</define>
+<define name="text-chapter-attlist" combine="interleave">
+    <attribute name="text:display">
+        <choice>
+            <value>name</value>
+            <value>number</value>
+            <value>number-and-name</value>
+            <value>plain-number-and-name</value>
+            <value>plain-number</value>
+        </choice>
+    </attribute>
+</define>
+<define name="text-chapter-attlist" combine="interleave">
+    <attribute name="text:outline-level">
+        <ref name="nonNegativeInteger"/>
+    </attribute>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:file-name">
+        <ref name="text-file-name-attlist"/>
+        <text/>
+    </element>
+</define>
+<define name="text-file-name-attlist" combine="interleave">
+    <optional>
+        <attribute name="text:display">
+            <choice>
+                <value>full</value>
+                <value>path</value>
+                <value>name</value>
+                <value>name-and-extension</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="text-file-name-attlist" combine="interleave">
+    <ref name="common-field-fixed-attlist"/>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:template-name">
+        <ref name="text-template-name-attlist"/>
+        <text/>
+    </element>
+</define>
+<define name="text-template-name-attlist">
+    <optional>
+        <attribute name="text:display">
+            <choice>
+                <value>full</value>
+                <value>path</value>
+                <value>name</value>
+                <value>name-and-extension</value>
+                <value>area</value>
+                <value>title</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:sheet-name">
+        <text/>
+    </element>
+</define>
+<define name="text-variable-decl">
+    <element name="text:variable-decl">
+        <ref name="common-field-name-attlist"/>
+        <ref name="common-value-type-attlist"/>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:variable-set">
+        <interleave>
+            <ref name="common-field-name-attlist"/>
+            <ref name="common-field-formula-attlist"/>
+            <ref name="common-value-and-type-attlist"/>
+            <ref name="common-field-display-value-none-attlist"/>
+            <ref name="common-field-data-style-name-attlist"/>
+        </interleave>
+        <text/>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:variable-get">
+        <interleave>
+            <ref name="common-field-name-attlist"/>
+            <ref name="common-field-display-value-formula-attlist"/>
+            <ref name="common-field-data-style-name-attlist"/>
+        </interleave>
+        <text/>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:variable-input">
+        <interleave>
+            <ref name="common-field-name-attlist"/>
+            <ref name="common-field-description-attlist"/>
+            <ref name="common-value-type-attlist"/>
+            <ref name="common-field-display-value-none-attlist"/>
+            <ref name="common-field-data-style-name-attlist"/>
+        </interleave>
+        <text/>
+    </element>
+</define>
+<define name="text-user-field-decl">
+    <element name="text:user-field-decl">
+        <ref name="common-field-name-attlist"/>
+        <optional>
+            <ref name="common-field-formula-attlist"/>
+        </optional>
+        <ref name="common-value-and-type-attlist"/>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:user-field-get">
+        <interleave>
+            <ref name="common-field-name-attlist"/>
+            <ref name="common-field-display-value-formula-none-attlist"/>
+            <ref name="common-field-data-style-name-attlist"/>
+        </interleave>
+        <text/>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:user-field-input">
+        <interleave>
+            <ref name="common-field-name-attlist"/>
+            <ref name="common-field-description-attlist"/>
+            <ref name="common-field-data-style-name-attlist"/>
+        </interleave>
+        <text/>
+    </element>
+</define>
+<define name="text-sequence-decl">
+    <element name="text:sequence-decl">
+        <ref name="text-sequence-decl-attlist"/>
+    </element>
+</define>
+<define name="text-sequence-decl-attlist" combine="interleave">
+    <ref name="common-field-name-attlist"/>
+</define>
+<define name="text-sequence-decl-attlist" combine="interleave">
+    <attribute name="text:display-outline-level">
+        <ref name="nonNegativeInteger"/>
+    </attribute>
+</define>
+<define name="text-sequence-decl-attlist" combine="interleave">
+    <optional>
+        <attribute name="text:separation-character">
+            <ref name="character"/>
+        </attribute>
+    </optional>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:sequence">
+        <interleave>
+            <ref name="common-field-name-attlist"/>
+            <ref name="common-field-formula-attlist"/>
+            <ref name="common-field-num-format-attlist"/>
+            <ref name="text-sequence-ref-name"/>
+        </interleave>
+        <text/>
+    </element>
+</define>
+<define name="text-sequence-ref-name">
+    <optional>
+        <attribute name="text:ref-name">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:expression">
+        <interleave>
+            <ref name="common-field-formula-attlist"/>
+            <optional>
+                <ref name="common-value-and-type-attlist"/>
+            </optional>
+            <ref name="common-field-display-value-formula-attlist"/>
+            <ref name="common-field-data-style-name-attlist"/>
+        </interleave>
+        <text/>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:text-input">
+        <ref name="common-field-description-attlist"/>
+        <text/>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:initial-creator">
+        <ref name="common-field-fixed-attlist"/>
+        <text/>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:creation-date">
+        <interleave>
+            <ref name="common-field-fixed-attlist"/>
+            <ref name="common-field-data-style-name-attlist"/>
+            <optional>
+                <attribute name="text:date-value">
+                    <ref name="dateOrDateTime"/>
+                </attribute>
+            </optional>
+        </interleave>
+        <text/>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:creation-time">
+        <interleave>
+            <ref name="common-field-fixed-attlist"/>
+            <ref name="common-field-data-style-name-attlist"/>
+            <optional>
+                <attribute name="text:time-value">
+                    <ref name="timeOrDateTime"/>
+                </attribute>
+            </optional>
+        </interleave>
+        <text/>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:description">
+        <ref name="common-field-fixed-attlist"/>
+        <text/>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:user-defined">
+        <interleave>
+            <ref name="common-field-fixed-attlist"/>
+            <attribute name="text:name">
+                <ref name="string"/>
+            </attribute>
+            <ref name="common-field-data-style-name-attlist"/>
+            <optional>
+                <attribute name="office:value">
+                    <ref name="double"/>
+                </attribute>
+            </optional>
+            <optional>
+                <attribute name="office:date-value">
+                    <ref name="dateOrDateTime"/>
+                </attribute>
+            </optional>
+            <optional>
+                <attribute name="office:time-value">
+                    <ref name="duration"/>
+                </attribute>
+            </optional>
+            <optional>
+                <attribute name="office:boolean-value">
+                    <ref name="boolean"/>
+                </attribute>
+            </optional>
+            <optional>
+                <attribute name="office:string-value">
+                    <ref name="string"/>
+                </attribute>
+            </optional>
+        </interleave>
+        <text/>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:print-time">
+        <interleave>
+            <ref name="common-field-fixed-attlist"/>
+            <ref name="common-field-data-style-name-attlist"/>
+            <optional>
+                <attribute name="text:time-value">
+                    <ref name="time"/>
+                </attribute>
+            </optional>
+        </interleave>
+        <text/>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:print-date">
+        <interleave>
+            <ref name="common-field-fixed-attlist"/>
+            <ref name="common-field-data-style-name-attlist"/>
+            <optional>
+                <attribute name="text:date-value">
+                    <ref name="date"/>
+                </attribute>
+            </optional>
+        </interleave>
+        <text/>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:printed-by">
+        <ref name="common-field-fixed-attlist"/>
+        <text/>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:title">
+        <ref name="common-field-fixed-attlist"/>
+        <text/>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:subject">
+        <ref name="common-field-fixed-attlist"/>
+        <text/>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:keywords">
+        <ref name="common-field-fixed-attlist"/>
+        <text/>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:editing-cycles">
+        <ref name="common-field-fixed-attlist"/>
+        <text/>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:editing-duration">
+        <interleave>
+            <ref name="common-field-fixed-attlist"/>
+            <ref name="common-field-data-style-name-attlist"/>
+            <optional>
+                <attribute name="text:duration">
+                    <ref name="duration"/>
+                </attribute>
+            </optional>
+        </interleave>
+        <text/>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:modification-time">
+        <interleave>
+            <ref name="common-field-fixed-attlist"/>
+            <ref name="common-field-data-style-name-attlist"/>
+            <optional>
+                <attribute name="text:time-value">
+                    <ref name="time"/>
+                </attribute>
+            </optional>
+        </interleave>
+        <text/>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:modification-date">
+        <interleave>
+            <ref name="common-field-fixed-attlist"/>
+            <ref name="common-field-data-style-name-attlist"/>
+            <optional>
+                <attribute name="text:date-value">
+                    <ref name="date"/>
+                </attribute>
+            </optional>
+        </interleave>
+        <text/>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:creator">
+        <ref name="common-field-fixed-attlist"/>
+        <text/>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element>
+        <choice>
+            <name>text:page-count</name>
+            <name>text:paragraph-count</name>
+            <name>text:word-count</name>
+            <name>text:character-count</name>
+            <name>text:table-count</name>
+            <name>text:image-count</name>
+            <name>text:object-count</name>
+        </choice>
+        <ref name="common-field-num-format-attlist"/>
+        <text/>
+    </element>
+</define>
+<define name="common-field-database-table">
+    <ref name="common-field-database-table-attlist"/>
+    <ref name="common-field-database-name"/>
+</define>
+<define name="common-field-database-name" combine="choice">
+    <optional>
+        <attribute name="text:database-name">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-field-database-name" combine="choice">
+    <ref name="form-connection-resource"/>
+</define>
+<define name="common-field-database-table-attlist" combine="interleave">
+    <attribute name="text:table-name">
+        <ref name="string"/>
+    </attribute>
+</define>
+<define name="common-field-database-table-attlist" combine="interleave">
+    <optional>
+        <attribute name="text:table-type">
+            <choice>
+                <value>table</value>
+                <value>query</value>
+                <value>command</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:database-display">
+        <ref name="text-database-display-attlist"/>
+        <text/>
+    </element>
+</define>
+<define name="text-database-display-attlist" combine="interleave">
+    <ref name="common-field-database-table"/>
+</define>
+<define name="text-database-display-attlist" combine="interleave">
+    <ref name="common-field-data-style-name-attlist"/>
+</define>
+<define name="text-database-display-attlist" combine="interleave">
+    <attribute name="text:column-name">
+        <ref name="string"/>
+    </attribute>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:database-next">
+        <ref name="text-database-next-attlist"/>
+    </element>
+</define>
+<define name="text-database-next-attlist" combine="interleave">
+    <ref name="common-field-database-table"/>
+</define>
+<define name="text-database-next-attlist" combine="interleave">
+    <optional>
+        <attribute name="text:condition">
+            <ref name="formula"/>
+        </attribute>
+    </optional>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:database-row-select">
+        <ref name="text-database-row-select-attlist"/>
+    </element>
+</define>
+<define name="text-database-row-select-attlist" combine="interleave">
+    <ref name="common-field-database-table"/>
+</define>
+<define name="text-database-row-select-attlist" combine="interleave">
+    <optional>
+        <attribute name="text:condition">
+            <ref name="formula"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-database-row-select-attlist" combine="interleave">
+    <optional>
+        <attribute name="text:row-number">
+            <ref name="nonNegativeInteger"/>
+        </attribute>
+    </optional>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:database-row-number">
+        <interleave>
+            <ref name="common-field-database-table"/>
+            <ref name="common-field-num-format-attlist"/>
+            <optional>
+                <attribute name="text:value">
+                    <ref name="nonNegativeInteger"/>
+                </attribute>
+            </optional>
+        </interleave>
+        <text/>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:database-name">
+        <ref name="common-field-database-table"/>
+        <text/>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:page-variable-set">
+        <ref name="text-set-page-variable-attlist"/>
+        <text/>
+    </element>
+</define>
+<define name="text-set-page-variable-attlist" combine="interleave">
+    <optional>
+        <attribute name="text:active">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-set-page-variable-attlist" combine="interleave">
+    <optional>
+        <attribute name="text:page-adjust">
+            <ref name="integer"/>
+        </attribute>
+    </optional>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:page-variable-get">
+        <ref name="text-get-page-variable-attlist"/>
+        <text/>
+    </element>
+</define>
+<define name="text-get-page-variable-attlist" combine="interleave">
+    <ref name="common-field-num-format-attlist"/>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:placeholder">
+        <ref name="text-placeholder-attlist"/>
+        <text/>
+    </element>
+</define>
+<define name="text-placeholder-attlist" combine="interleave">
+    <attribute name="text:placeholder-type">
+        <choice>
+            <value>text</value>
+            <value>table</value>
+            <value>text-box</value>
+            <value>image</value>
+            <value>object</value>
+        </choice>
+    </attribute>
+</define>
+<define name="text-placeholder-attlist" combine="interleave">
+    <ref name="common-field-description-attlist"/>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:conditional-text">
+        <ref name="text-conditional-text-attlist"/>
+        <text/>
+    </element>
+</define>
+<define name="text-conditional-text-attlist" combine="interleave">
+    <attribute name="text:condition">
+        <ref name="formula"/>
+    </attribute>
+</define>
+<define name="text-conditional-text-attlist" combine="interleave">
+    <attribute name="text:string-value-if-true">
+        <ref name="string"/>
+    </attribute>
+</define>
+<define name="text-conditional-text-attlist" combine="interleave">
+    <attribute name="text:string-value-if-false">
+        <ref name="string"/>
+    </attribute>
+</define>
+<define name="text-conditional-text-attlist" combine="interleave">
+    <optional>
+        <attribute name="text:current-value">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:hidden-text">
+        <ref name="text-hidden-text-attlist"/>
+        <text/>
+    </element>
+</define>
+<define name="text-hidden-text-attlist" combine="interleave">
+    <attribute name="text:condition">
+        <ref name="formula"/>
+    </attribute>
+</define>
+<define name="text-hidden-text-attlist" combine="interleave">
+    <attribute name="text:string-value">
+        <ref name="string"/>
+    </attribute>
+</define>
+<define name="text-hidden-text-attlist" combine="interleave">
+    <optional>
+        <attribute name="text:is-hidden">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element>
+        <choice>
+            <name>text:reference-ref</name>
+            <name>text:bookmark-ref</name>
+        </choice>
+        <interleave>
+            <ref name="text-common-ref-content"/>
+            <ref name="text-ref-content"/>
+        </interleave>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:note-ref">
+        <interleave>
+            <ref name="text-common-ref-content"/>
+            <ref name="text-note-ref-content"/>
+            <ref name="text-ref-content"/>
+        </interleave>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:sequence-ref">
+        <interleave>
+            <ref name="text-common-ref-content"/>
+            <ref name="text-sequence-ref-content"/>
+        </interleave>
+    </element>
+</define>
+<define name="text-common-ref-content" combine="interleave">
+    <text/>
+</define>
+<define name="text-common-ref-content" combine="interleave">
+    <optional>
+        <attribute name="text:ref-name">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-note-ref-content" combine="interleave">
+    <ref name="text-note-class"/>
+</define>
+<define name="text-ref-content" combine="interleave">
+    <optional>
+        <attribute name="text:reference-format">
+            <choice>
+                <value>page</value>
+                <value>chapter</value>
+                <value>direction</value>
+                <value>text</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="text-sequence-ref-content" combine="interleave">
+    <optional>
+        <attribute name="text:reference-format">
+            <choice>
+                <value>page</value>
+                <value>chapter</value>
+                <value>direction</value>
+                <value>text</value>
+                <value>category-and-value</value>
+                <value>caption</value>
+                <value>value</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:script">
+        <interleave>
+            <choice>
+                <group>
+                    <attribute name="xlink:href">
+                        <ref name="anyURI"/>
+                    </attribute>
+                    <optional>
+                        <attribute name="xlink:type" a:defaultValue="simple">
+                            <value>simple</value>
+                        </attribute>
+                    </optional>
+                </group>    
+                <text/>
+            </choice>
+            <optional>
+                <attribute name="script:language">
+                    <ref name="string"/>
+                </attribute>
+            </optional>
+        </interleave>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:execute-macro">
+        <optional>
+            <attribute name="text:name">
+                <ref name="string"/>
+            </attribute>
+        </optional>
+        <optional>
+            <ref name="office-event-listeners"/>
+        </optional>
+        <text/>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:hidden-paragraph">
+        <ref name="text-hidden-paragraph-attlist"/>
+        <text/>
+    </element>
+</define>
+<define name="text-hidden-paragraph-attlist" combine="interleave">
+    <attribute name="text:condition">
+        <ref name="formula"/>
+    </attribute>
+</define>
+<define name="text-hidden-paragraph-attlist" combine="interleave">
+    <optional>
+        <attribute name="text:is-hidden">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:dde-connection">
+        <attribute name="text:connection-name">
+            <ref name="string"/>
+        </attribute>
+        <text/>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:measure">
+        <attribute name="text:kind">
+            <choice>
+                <value>value</value>
+                <value>unit</value>
+                <value>gap</value>
+            </choice>
+        </attribute>
+        <text/>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:table-formula">
+        <interleave>
+            <ref name="common-field-formula-attlist"/>
+            <ref name="common-field-display-value-formula-attlist"/>
+            <ref name="common-field-data-style-name-attlist"/>
+        </interleave>
+        <text/>
+    </element>
+</define>
+<define name="common-value-type-attlist">
+    <attribute name="office:value-type">
+        <ref name="valueType"/>
+    </attribute>
+</define>
+<define name="common-value-and-type-attlist">
+    <choice>
+        <group>
+            <attribute name="office:value-type">
+                <value>float</value>
+            </attribute>
+            <attribute name="office:value">
+                <ref name="double"/>
+            </attribute>
+        </group>
+        <group>
+            <attribute name="office:value-type">
+                <value>percentage</value>
+            </attribute>
+            <attribute name="office:value">
+                <ref name="double"/>
+            </attribute>
+        </group>
+        <group>
+            <attribute name="office:value-type">
+                <value>currency</value>
+            </attribute>
+            <attribute name="office:value">
+                <ref name="double"/>
+            </attribute>
+            <optional>
+                <attribute name="office:currency">
+                    <ref name="string"/>
+                </attribute>
+            </optional>
+        </group>
+        <group>
+            <attribute name="office:value-type">
+                <value>date</value>
+            </attribute>
+            <attribute name="office:date-value">
+                <ref name="dateOrDateTime"/>
+            </attribute>
+        </group>
+        <group>
+            <attribute name="office:value-type">
+                <value>time</value>
+            </attribute>
+            <attribute name="office:time-value">
+                <ref name="duration"/>
+            </attribute>
+        </group>
+        <group>
+            <attribute name="office:value-type">
+                <value>boolean</value>
+            </attribute>
+            <attribute name="office:boolean-value">
+                <ref name="boolean"/>
+            </attribute>
+        </group>
+        <group>
+            <attribute name="office:value-type">
+                <value>string</value>
+            </attribute>
+            <optional>
+                <attribute name="office:string-value">
+                    <ref name="string"/>
+                </attribute>
+            </optional>
+        </group>
+    </choice>
+</define>
+<define name="common-field-fixed-attlist">
+    <optional>
+        <attribute name="text:fixed">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-field-name-attlist">
+    <attribute name="text:name">
+        <ref name="variableName"/>
+    </attribute>
+</define>
+<define name="common-field-description-attlist">
+    <optional>
+        <attribute name="text:description">
+            <text/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-field-display-value-none-attlist">
+    <optional>
+        <attribute name="text:display">
+            <choice>
+                <value>value</value>
+                <value>none</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="common-field-display-value-formula-none-attlist">
+    <optional>
+        <attribute name="text:display">
+            <choice>
+                <value>value</value>
+                <value>formula</value>
+                <value>none</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="common-field-display-value-formula-attlist">
+    <optional>
+        <attribute name="text:display">
+            <choice>
+                <value>value</value>
+                <value>formula</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="common-field-formula-attlist">
+    <optional>
+        <attribute name="text:formula">
+            <ref name="formula"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-field-data-style-name-attlist">
+    <optional>
+        <attribute name="style:data-style-name">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-field-num-format-attlist">
+    <optional>
+        <ref name="common-num-format-attlist"/>
+    </optional>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:toc-mark-start">
+        <ref name="text-toc-mark-start-attrs"/>
+    </element>
+</define>
+<define name="text-toc-mark-start-attrs">
+    <ref name="text-id"/>
+    <ref name="text-outline-level"/>
+</define>
+<define name="text-outline-level">
+    <optional>
+        <attribute name="text:outline-level">
+            <ref name="positiveInteger"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-id">
+    <attribute name="text:id">
+        <ref name="string"/>
+    </attribute>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:toc-mark-end">
+        <ref name="text-id"/>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:toc-mark">
+        <attribute name="text:string-value">
+            <ref name="string"/>
+        </attribute>
+        <ref name="text-outline-level"/>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:user-index-mark-start">
+        <ref name="text-id"/>
+        <ref name="text-outline-level"/>
+        <ref name="text-index-name"/>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:user-index-mark-end">
+        <ref name="text-id"/>
+        <ref name="text-outline-level"/>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:user-index-mark">
+        <attribute name="text:string-value">
+            <ref name="string"/>
+        </attribute>
+        <ref name="text-outline-level"/>
+        <ref name="text-index-name"/>
+    </element>
+</define>
+<define name="text-index-name">
+    <attribute name="text:index-name">
+        <ref name="string"/>
+    </attribute>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:alphabetical-index-mark-start">
+        <ref name="text-id"/>
+        <ref name="text-alphabetical-index-mark-attrs"/>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:alphabetical-index-mark-end">
+        <ref name="text-id"/>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:alphabetical-index-mark">
+        <attribute name="text:string-value">
+            <ref name="string"/>
+        </attribute>
+        <ref name="text-alphabetical-index-mark-attrs"/>
+    </element>
+</define>
+<define name="text-alphabetical-index-mark-attrs" combine="interleave">
+    <optional>
+        <attribute name="text:key1">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="text:key2">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-alphabetical-index-mark-attrs" combine="interleave">
+    <optional>
+        <attribute name="text:string-value-phonetic">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="text:key1-phonetic">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="text:key2-phonetic">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-alphabetical-index-mark-attrs" combine="interleave">
+    <optional>
+        <attribute name="text:main-entry" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:bibliography-mark">
+        <attribute name="text:bibliography-type">
+            <ref name="text-bibliography-types"/>
+        </attribute>
+        <zeroOrMore>
+            <attribute>
+                <choice>
+                    <name>text:identifier</name>
+                    <name>text:address</name>
+                    <name>text:annote</name>
+                    <name>text:author</name>
+                    <name>text:booktitle</name>
+                    <name>text:chapter</name>
+                    <name>text:edition</name>
+                    <name>text:editor</name>
+                    <name>text:howpublished</name>
+                    <name>text:institution</name>
+                    <name>text:journal</name>
+                    <name>text:month</name>
+                    <name>text:note</name>
+                    <name>text:number</name>
+                    <name>text:organizations</name>
+                    <name>text:pages</name>
+                    <name>text:publisher</name>
+                    <name>text:school</name>
+                    <name>text:series</name>
+                    <name>text:title</name>
+                    <name>text:report-type</name>
+                    <name>text:volume</name>
+                    <name>text:year</name>
+                    <name>text:url</name>
+                    <name>text:custom1</name>
+                    <name>text:custom2</name>
+                    <name>text:custom3</name>
+                    <name>text:custom4</name>
+                    <name>text:custom5</name>
+                    <name>text:isbn</name>
+                    <name>text:issn</name>
+                </choice>
+                <ref name="string"/>
+            </attribute>
+        </zeroOrMore>
+        <text/>
+    </element>
+</define>
+<define name="text-bibliography-types">
+    <choice>
+        <value>article</value>
+        <value>book</value>
+        <value>booklet</value>
+        <value>conference</value>
+        <value>custom1</value>
+        <value>custom2</value>
+        <value>custom3</value>
+        <value>custom4</value>
+        <value>custom5</value>
+        <value>email</value>
+        <value>inbook</value>
+        <value>incollection</value>
+        <value>inproceedings</value>
+        <value>journal</value>
+        <value>manual</value>
+        <value>mastersthesis</value>
+        <value>misc</value>
+        <value>phdthesis</value>
+        <value>proceedings</value>
+        <value>techreport</value>
+        <value>unpublished</value>
+        <value>www</value>
+    </choice>
+</define>
+<define name="text-index-body">
+    <element name="text:index-body">
+        <zeroOrMore>
+            <ref name="index-content-main"/>
+        </zeroOrMore>
+    </element>
+</define>
+<define name="index-content-main">
+    <choice>
+        <ref name="text-content"/>
+        <ref name="text-index-title"/>
+    </choice>
+</define>
+<define name="text-index-title">
+    <element name="text:index-title">
+        <ref name="sectionAttr"/>
+        <zeroOrMore>
+            <ref name="index-content-main"/>
+        </zeroOrMore>
+    </element>
+</define>
+<define name="text-table-of-content">
+    <element name="text:table-of-content">
+        <ref name="sectionAttr"/>
+        <ref name="text-table-of-content-source"/>
+        <ref name="text-index-body"/>
+    </element>
+</define>
+<define name="text-table-of-content-source">
+    <element name="text:table-of-content-source">
+        <ref name="text-table-of-content-source-attlist"/>
+        <optional>
+            <ref name="text-index-title-template"/>
+        </optional>
+        <zeroOrMore>
+            <ref name="text-table-of-content-entry-template"/>
+        </zeroOrMore>
+        <zeroOrMore>
+            <ref name="text-index-source-styles"/>
+        </zeroOrMore>
+    </element>
+</define>
+<define name="text-table-of-content-source-attlist" combine="interleave">
+    <optional>
+        <attribute name="text:outline-level">
+            <choice>
+                <ref name="positiveInteger"/>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="text-table-of-content-source-attlist" combine="interleave">
+    <optional>
+        <attribute name="text:use-outline-level" a:defaultValue="true">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-table-of-content-source-attlist" combine="interleave">
+    <optional>
+        <attribute name="text:use-index-marks">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-table-of-content-source-attlist" combine="interleave">
+    <optional>
+        <attribute name="text:use-index-source-styles">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-table-of-content-source-attlist" combine="interleave">
+    <optional>
+        <attribute name="text:index-scope">
+            <choice>
+                <value>document</value>
+                <value>chapter</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="text-table-of-content-source-attlist" combine="interleave">
+    <optional>
+        <attribute name="text:relative-tab-stop-position">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-table-of-content-entry-template">
+    <element name="text:table-of-content-entry-template">
+        <ref name="text-table-of-content-entry-template-attlist"/>
+        <zeroOrMore>
+            <ref name="text-table-of-content-children"/>
+
+        </zeroOrMore>
+    </element>
+</define>
+<define name="text-table-of-content-children">
+    <choice>
+        <ref name="text-index-entry-chapter"/>
+        <ref name="text-index-entry-page-number"/>
+        <ref name="text-index-entry-text"/>
+        <ref name="text-index-entry-span"/>
+        <ref name="text-index-entry-tab-stop"/>
+        <ref name="text-index-entry-link-start"/>
+        <ref name="text-index-entry-link-end"/>
+    </choice>
+</define>
+<define name="text-table-of-content-entry-template-attlist"
+        combine="interleave">
+    <attribute name="text:outline-level">
+        <ref name="positiveInteger"/>
+    </attribute>
+</define>
+<define name="text-table-of-content-entry-template-attlist"
+        combine="interleave">
+    <attribute name="text:style-name">
+        <ref name="styleNameRef"/>
+    </attribute>
+</define>
+<define name="text-illustration-index">
+    <element name="text:illustration-index">
+        <ref name="sectionAttr"/>
+        <ref name="text-illustration-index-source"/>
+        <ref name="text-index-body"/>
+    </element>
+</define>
+<define name="text-illustration-index-source">
+    <element name="text:illustration-index-source">
+        <ref name="text-illustration-index-source-attrs"/>
+        <optional>
+            <ref name="text-index-title-template"/>
+        </optional>
+        <optional>
+            <ref name="text-illustration-index-entry-template"/>
+        </optional>
+    </element>
+</define>
+<define name="text-illustration-index-source-attrs" combine="interleave">
+    <ref name="text-index-scope-attr"/>
+</define>
+<define name="text-index-scope-attr">
+    <optional>
+        <attribute name="text:index-scope" a:defaultValue="document">
+            <choice>
+                <value>document</value>
+                <value>chapter</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="text-illustration-index-source-attrs" combine="interleave">
+    <ref name="text-relative-tab-stop-position-attr"/>
+</define>
+<define name="text-relative-tab-stop-position-attr">
+    <optional>
+        <attribute name="text:relative-tab-stop-position"
+                   a:defaultValue="true">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-illustration-index-source-attrs" combine="interleave">
+    <optional>
+        <attribute name="text:use-caption" a:defaultValue="true">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-illustration-index-source-attrs" combine="interleave">
+    <optional>
+        <attribute name="text:caption-sequence-name">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-illustration-index-source-attrs" combine="interleave">
+    <optional>
+        <attribute name="text:caption-sequence-format">
+            <choice>
+                <value>text</value>
+                <value>category-and-value</value>
+                <value>caption</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="text-illustration-index-entry-template">
+    <element name="text:illustration-index-entry-template">
+        <ref name="text-illustration-index-entry-content"/>
+    </element>
+</define>
+<define name="text-illustration-index-entry-content">
+    <ref name="text-illustration-index-entry-template-attrs"/>
+    <zeroOrMore>
+        <choice>
+            <ref name="text-index-entry-page-number"/>
+            <ref name="text-index-entry-text"/>
+            <ref name="text-index-entry-span"/>
+            <ref name="text-index-entry-tab-stop"/>
+        </choice>
+    </zeroOrMore>
+</define>
+<define name="text-illustration-index-entry-template-attrs">
+    <attribute name="text:style-name">
+        <ref name="styleNameRef"/>
+    </attribute>
+</define>
+<define name="text-table-index">
+    <element name="text:table-index">
+        <ref name="sectionAttr"/>
+        <ref name="text-table-index-source"/>
+        <ref name="text-index-body"/>
+    </element>
+</define>
+<define name="text-table-index-source">
+    <element name="text:table-index-source">
+        <ref name="text-illustration-index-source-attrs"/>
+        <optional>
+            <ref name="text-index-title-template"/>
+        </optional>
+        <optional>
+            <ref name="text-table-index-entry-template"/>
+        </optional>
+    </element>
+</define>
+<define name="text-table-index-entry-template">
+    <element name="text:table-index-entry-template">
+        <ref name="text-illustration-index-entry-content"/>
+    </element>
+</define>
+<define name="text-object-index">
+    <element name="text:object-index">
+        <ref name="sectionAttr"/>
+        <ref name="text-object-index-source"/>
+        <ref name="text-index-body"/>
+    </element>
+</define>
+<define name="text-object-index-source">
+    <element name="text:object-index-source">
+        <ref name="text-object-index-source-attrs"/>
+        <optional>
+            <ref name="text-index-title-template"/>
+        </optional>
+        <optional>
+            <ref name="text-object-index-entry-template"/>
+        </optional>
+    </element>
+</define>
+<define name="text-object-index-source-attrs" combine="interleave">
+    <ref name="text-index-scope-attr"/>
+</define>
+<define name="text-object-index-source-attrs" combine="interleave">
+    <ref name="text-relative-tab-stop-position-attr"/>
+</define>
+<define name="text-object-index-source-attrs" combine="interleave">
+    <optional>
+        <attribute name="text:use-spreadsheet-objects" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-object-index-source-attrs" combine="interleave">
+    <optional>
+        <attribute name="text:use-math-objects" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-object-index-source-attrs" combine="interleave">
+    <optional>
+        <attribute name="text:use-draw-objects" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-object-index-source-attrs" combine="interleave">
+    <optional>
+        <attribute name="text:use-chart-objects" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-object-index-source-attrs" combine="interleave">
+    <optional>
+        <attribute name="text:use-other-objects" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-object-index-entry-template">
+    <element name="text:object-index-entry-template">
+        <ref name="text-illustration-index-entry-content"/>
+    </element>
+</define>
+<define name="text-user-index">
+    <element name="text:user-index">
+        <ref name="sectionAttr"/>
+        <ref name="text-user-index-source"/>
+        <ref name="text-index-body"/>
+    </element>
+</define>
+<define name="text-user-index-source">
+    <element name="text:user-index-source">
+        <ref name="text-user-index-source-attr"/>
+        <optional>
+            <ref name="text-index-title-template"/>
+        </optional>
+        <zeroOrMore>
+            <ref name="text-user-index-entry-template"/>
+        </zeroOrMore>
+        <zeroOrMore>
+            <ref name="text-index-source-styles"/>
+        </zeroOrMore>
+    </element>
+</define>
+<define name="text-user-index-source-attr" combine="interleave">
+    <ref name="text-index-scope-attr"/>
+    <ref name="text-relative-tab-stop-position-attr"/>
+    <attribute name="text:index-name">
+        <ref name="string"/>
+    </attribute>
+</define>
+<define name="text-user-index-source-attr" combine="interleave">
+    <optional>
+        <attribute name="text:use-index-marks" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="text:use-graphics" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="text:use-tables" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="text:use-floating-frames"
+                     a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="text:use-objects" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-user-index-source-attr" combine="interleave">
+    <optional>
+        <attribute name="text:copy-outline-levels"
+                     a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-user-index-entry-template">
+    <element name="text:user-index-entry-template">
+        <ref name="text-user-index-entry-template-attrs"/>
+        <zeroOrMore>
+            <choice>
+                <ref name="text-index-entry-chapter"/>
+                <ref name="text-index-entry-page-number"/>
+                <ref name="text-index-entry-text"/>
+                <ref name="text-index-entry-span"/>
+                <ref name="text-index-entry-tab-stop"/>
+            </choice>
+        </zeroOrMore>
+    </element>
+</define>
+<define name="text-user-index-entry-template-attrs" combine="interleave">
+    <attribute name="text:outline-level">
+        <ref name="positiveInteger"/>
+    </attribute>
+</define>
+<define name="text-user-index-entry-template-attrs" combine="interleave">
+    <attribute name="text:style-name">
+        <ref name="styleNameRef"/>
+    </attribute>
+</define>
+<define name="text-alphabetical-index">
+    <element name="text:alphabetical-index">
+        <ref name="sectionAttr"/>
+        <ref name="text-alphabetical-index-source"/>
+        <ref name="text-index-body"/>
+    </element>
+</define>
+<define name="text-alphabetical-index-source">
+    <element name="text:alphabetical-index-source">
+        <ref name="text-alphabetical-index-source-attrs"/>
+        <optional>
+            <ref name="text-index-title-template"/>
+        </optional>
+        <zeroOrMore>
+            <ref name="text-alphabetical-index-entry-template"/>
+        </zeroOrMore>
+    </element>
+</define>
+<define name="text-alphabetical-index-source-attrs" combine="interleave">
+    <ref name="text-index-scope-attr"/>
+    <ref name="text-relative-tab-stop-position-attr"/>
+</define>
+<define name="text-alphabetical-index-source-attrs" combine="interleave">
+    <optional>
+        <attribute name="text:ignore-case" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-alphabetical-index-source-attrs" combine="interleave">
+    <optional>
+        <attribute name="text:main-entry-style-name">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-alphabetical-index-source-attrs" combine="interleave">
+    <optional>
+        <attribute name="text:alphabetical-separators" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-alphabetical-index-source-attrs" combine="interleave">
+    <optional>
+        <attribute name="text:combine-entries" a:defaultValue="true">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="text:combine-entries-with-dash"
+                   a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="text:combine-entries-with-pp" a:defaultValue="true">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-alphabetical-index-source-attrs" combine="interleave">
+    <optional>
+        <attribute name="text:use-keys-as-entries" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-alphabetical-index-source-attrs" combine="interleave">
+    <optional>
+        <attribute name="text:capitalize-entries" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-alphabetical-index-source-attrs" combine="interleave">
+    <optional>
+        <attribute name="text:comma-separated" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-alphabetical-index-source-attrs" combine="interleave">
+    <optional>
+        <attribute name="fo:language">
+            <ref name="languageCode"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-alphabetical-index-source-attrs" combine="interleave">
+    <optional>
+        <attribute name="fo:country">
+            <ref name="countryCode"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-alphabetical-index-source-attrs" combine="interleave">
+    <optional>
+        <attribute name="text:sort-algorithm">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-alphabetical-index-auto-mark-file">
+    <element name="text:alphabetical-index-auto-mark-file">
+        <attribute name="xlink:href">
+            <ref name="anyURI"/>
+        </attribute>
+        <optional>
+            <attribute name="xlink:type" a:defaultValue="simple">
+                <value>simple</value>
+            </attribute>
+        </optional>
+    </element>
+</define>
+<define name="text-alphabetical-index-entry-template">
+    <element name="text:alphabetical-index-entry-template">
+        <ref name="text-alphabetical-index-entry-template-attrs"/>
+        <zeroOrMore>
+            <choice>
+                <ref name="text-index-entry-chapter"/>
+                <ref name="text-index-entry-page-number"/>
+                <ref name="text-index-entry-text"/>
+                <ref name="text-index-entry-span"/>
+                <ref name="text-index-entry-tab-stop"/>
+            </choice>
+        </zeroOrMore>
+    </element>
+</define>
+<define name="text-alphabetical-index-entry-template-attrs"
+        combine="interleave">
+    <attribute name="text:outline-level">
+        <choice>
+            <value>1</value>
+            <value>2</value>
+            <value>3</value>
+            <value>separator</value>
+        </choice>
+    </attribute>
+</define>
+<define name="text-alphabetical-index-entry-template-attrs"
+        combine="interleave">
+    <attribute name="text:style-name">
+        <ref name="styleNameRef"/>
+    </attribute>
+</define>
+<define name="text-bibliography">
+    <element name="text:bibliography">
+        <ref name="sectionAttr"/>
+        <ref name="text-bibliography-source"/>
+        <ref name="text-index-body"/>
+    </element>
+</define>
+<define name="text-bibliography-source">
+    <element name="text:bibliography-source">
+        <optional>
+            <ref name="text-index-title-template"/>
+        </optional>
+        <zeroOrMore>
+            <ref name="text-bibliography-entry-template"/>
+        </zeroOrMore>
+    </element>
+</define>
+<define name="text-bibliography-entry-template">
+    <element name="text:bibliography-entry-template">
+        <ref name="text-bibliography-entry-template-attrs"/>
+        <zeroOrMore>
+            <choice>
+                <ref name="text-index-entry-span"/>
+                <ref name="text-index-entry-tab-stop"/>
+                <ref name="text-index-entry-bibliography"/>
+            </choice>
+        </zeroOrMore>
+    </element>
+</define>
+<define name="text-bibliography-entry-template-attrs" combine="interleave">
+    <attribute name="text:bibliography-type">
+        <ref name="text-bibliography-types"/>
+    </attribute>
+</define>
+<define name="text-bibliography-entry-template-attrs" combine="interleave">
+    <attribute name="text:style-name">
+        <ref name="styleNameRef"/>
+    </attribute>
+</define>
+<define name="text-index-source-styles">
+    <element name="text:index-source-styles">
+        <attribute name="text:outline-level">
+            <ref name="positiveInteger"/>
+        </attribute>
+        <zeroOrMore>
+            <ref name="text-index-source-style"/>
+        </zeroOrMore>
+    </element>
+</define>
+<define name="text-index-source-style">
+    <element name="text:index-source-style">
+        <attribute name="text:style-name">
+            <ref name="styleName"/>
+        </attribute>
+        <empty/>
+    </element>
+</define>
+<define name="text-index-title-template">
+    <element name="text:index-title-template">
+        <optional>
+            <attribute name="text:style-name">
+                <ref name="styleNameRef"/>
+            </attribute>
+        </optional>
+        <text/>
+    </element>
+</define>
+<define name="text-index-entry-chapter">
+    <element name="text:index-entry-chapter">
+        <optional>
+            <attribute name="text:style-name">
+                <ref name="styleNameRef"/>
+            </attribute>
+        </optional>
+        <ref name="text-index-entry-chapter-attrs"/>
+    </element>
+</define>
+<define name="text-index-entry-chapter-attrs">
+    <optional>
+        <attribute name="text:display" a:defaultValue="number">
+            <choice>
+                <value>name</value>
+                <value>number</value>
+                <value>number-and-name</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="text-index-entry-text">
+    <element name="text:index-entry-text">
+        <optional>
+            <attribute name="text:style-name">
+                <ref name="styleNameRef"/>
+            </attribute>
+        </optional>
+    </element>
+</define>
+<define name="text-index-entry-page-number">
+    <element name="text:index-entry-page-number">
+        <optional>
+            <attribute name="text:style-name">
+                <ref name="styleNameRef"/>
+            </attribute>
+        </optional>
+    </element>
+</define>
+<define name="text-index-entry-span">
+    <element name="text:index-entry-span">
+        <optional>
+            <attribute name="text:style-name">
+                <ref name="styleNameRef"/>
+            </attribute>
+        </optional>
+        <text/>
+    </element>
+</define>
+<define name="text-index-entry-bibliography">
+    <element name="text:index-entry-bibliography">
+        <ref name="text-index-entry-bibliography-attrs"/>
+    </element>
+</define>
+<define name="text-index-entry-bibliography-attrs" combine="interleave">
+    <optional>
+        <attribute name="text:style-name">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-index-entry-bibliography-attrs" combine="interleave">
+    <attribute name="text:bibliography-data-field">
+        <choice>
+            <value>address</value>
+            <value>annote</value>
+            <value>author</value>
+            <value>bibliography-type</value>
+            <value>booktitle</value>
+            <value>chapter</value>
+            <value>custom1</value>
+            <value>custom2</value>
+            <value>custom3</value>
+            <value>custom4</value>
+            <value>custom5</value>
+            <value>edition</value>
+            <value>editor</value>
+            <value>howpublished</value>
+            <value>identifier</value>
+            <value>institution</value>
+            <value>isbn</value>
+            <value>issn</value>
+            <value>journal</value>
+            <value>month</value>
+            <value>note</value>
+            <value>number</value>
+            <value>organizations</value>
+            <value>pages</value>
+            <value>publisher</value>
+            <value>report-type</value>
+            <value>school</value>
+            <value>series</value>
+            <value>title</value>
+            <value>url</value>
+            <value>volume</value>
+            <value>year</value>
+        </choice>
+    </attribute>
+</define>
+<define name="text-index-entry-tab-stop">
+    <element name="text:index-entry-tab-stop">
+        <optional>
+            <attribute name="text:style-name">
+                <ref name="styleNameRef"/>
+            </attribute>
+        </optional>
+        <ref name="text-index-entry-tab-stop-attrs"/>
+    </element>
+</define>
+<define name="text-index-entry-tab-stop-attrs" combine="interleave">
+    <optional>
+        <attribute name="style:leader-char">
+            <ref name="character"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-index-entry-tab-stop-attrs" combine="interleave">
+    <choice>
+        <attribute name="style:type">
+            <value>right</value>
+        </attribute>
+        <group>
+            <attribute name="style:type">
+                <value>left</value>
+            </attribute>
+            <attribute name="style:position">
+                <ref name="length"/>
+            </attribute>
+        </group>
+    </choice>
+</define>
+<define name="text-index-entry-link-start">
+    <element name="text:index-entry-link-start">
+        <optional>
+            <attribute name="text:style-name">
+                <ref name="styleNameRef"/>
+            </attribute>
+        </optional>
+    </element>
+</define>
+<define name="text-index-entry-link-end">
+    <element name="text:index-entry-link-end">
+        <optional>
+            <attribute name="text:style-name">
+                <ref name="styleNameRef"/>
+            </attribute>
+        </optional>
+    </element>
+</define>
+<define name="table-table">
+    <element name="table:table">
+        <ref name="table-table-attlist"/>
+        <optional>
+            <ref name="table-table-source"/>
+        </optional>
+        <optional>
+            <ref name="office-dde-source"/>
+        </optional>
+        <optional>
+            <ref name="table-scenario"/>
+        </optional>
+        <optional>
+            <ref name="office-forms"/>
+        </optional>
+        <optional>
+            <ref name="table-shapes"/>
+        </optional>
+        <ref name="table-columns-and-groups"/>
+        <ref name="table-rows-and-groups"/>
+    </element>
+</define>
+<define name="table-columns-and-groups">
+    <oneOrMore>
+        <choice>
+            <ref name="table-table-column-group"/>
+            <ref name="table-columns-no-group"/>
+        </choice>
+    </oneOrMore>
+</define>
+
+<define name="table-columns-no-group">
+    <choice>
+        <group>
+            <ref name="table-columns"/>
+            <optional>
+                <ref name="table-table-header-columns"/>
+                <optional>
+                    <ref name="table-columns"/>
+                </optional>
+            </optional>
+        </group>
+        <group>
+            <ref name="table-table-header-columns"/>
+            <optional>
+                <ref name="table-columns"/>
+            </optional>
+        </group>
+    </choice>
+</define>
+
+<define name="table-columns">
+    <choice>
+        <ref name="table-table-columns"/>
+        <oneOrMore>
+                <ref name="table-table-column"/>
+        </oneOrMore>
+    </choice>
+</define>
+
+<define name="table-rows-and-groups">
+    <oneOrMore>
+        <choice>
+            <ref name="table-table-row-group"/>
+            <ref name="table-rows-no-group"/>
+        </choice>
+    </oneOrMore>
+</define>
+
+<define name="table-rows-no-group">
+    <choice>
+        <group>
+            <ref name="table-rows"/>
+            <optional>
+                <ref name="table-table-header-rows"/>
+                <optional>
+                    <ref name="table-rows"/>
+                </optional>
+            </optional>
+        </group>
+        <group>
+            <ref name="table-table-header-rows"/>
+            <optional>
+                <ref name="table-rows"/>
+            </optional>
+        </group>
+    </choice>
+</define>
+
+<define name="table-rows">
+    <choice>
+        <ref name="table-table-rows"/>
+        <oneOrMore>
+            <optional>
+                <ref name="text-soft-page-break"/>
+            </optional>
+            <ref name="table-table-row"/>
+        </oneOrMore>
+    </choice>
+</define>
+<define name="table-table-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:name">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-table-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:style-name">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-table-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:protected" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="table:protection-key">
+            <text/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-table-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:print" a:defaultValue="true">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-table-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:print-ranges">
+            <ref name="cellRangeAddressList"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-table-row">
+    <element name="table:table-row">
+        <ref name="table-table-row-attlist"/>
+        <oneOrMore>
+            <choice>
+                <ref name="table-table-cell"/>
+                <ref name="table-covered-table-cell"/>
+            </choice>
+        </oneOrMore>
+    </element>
+</define>
+<define name="table-table-row-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:number-rows-repeated" a:defaultValue="1">
+            <ref name="positiveInteger"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-table-row-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:style-name">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-table-row-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:default-cell-style-name">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-table-row-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:visibility" a:defaultValue="visible">
+            <ref name="table-visibility-value"/>
+        </attribute>
+    </optional>
+</define>
+
+<define name="table-visibility-value">
+    <choice>
+        <value>visible</value>
+        <value>collapse</value>
+        <value>filter</value>
+    </choice>
+</define>
+<define name="table-table-cell">
+    <element name="table:table-cell">
+        <ref name="table-table-cell-attlist"/>
+        <ref name="table-table-cell-attlist-extra"/>
+        <ref name="table-table-cell-content"/>
+    </element>
+</define>
+
+<define name="table-covered-table-cell">
+    <element name="table:covered-table-cell">
+        <ref name="table-table-cell-attlist"/>
+        <ref name="table-table-cell-content"/>
+    </element>
+</define>
+
+<define name="table-table-cell-content">
+    <optional>
+        <ref name="table-cell-range-source"/>
+    </optional>
+    <optional>
+        <ref name="office-annotation"/>
+    </optional>
+    <optional>
+        <ref name="table-detective"/>
+    </optional>
+    <zeroOrMore>
+        <ref name="text-content"/>
+    </zeroOrMore>
+</define>
+<define name="table-table-cell-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:number-columns-repeated" a:defaultValue="1">
+            <ref name="positiveInteger"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-table-cell-attlist-extra" combine="interleave">
+    <optional>
+        <attribute name="table:number-columns-spanned" a:defaultValue="1">
+            <ref name="positiveInteger"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="table:number-rows-spanned" a:defaultValue="1">
+            <ref name="positiveInteger"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-table-cell-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:style-name">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-table-cell-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:content-validation-name">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-table-cell-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:formula">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-table-cell-attlist-extra" combine="interleave">
+    <optional>
+        <attribute name="table:number-matrix-columns-spanned">
+            <ref name="positiveInteger"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="table:number-matrix-rows-spanned">
+            <ref name="positiveInteger"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-table-cell-attlist" combine="interleave">
+    <optional>
+        <ref name="common-value-and-type-attlist"/>
+    </optional>
+</define>
+<define name="table-table-cell-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:protect" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-table-column">
+    <element name="table:table-column">
+        <ref name="table-table-column-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="table-table-column-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:number-columns-repeated" a:defaultValue="1">
+            <ref name="positiveInteger"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-table-column-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:style-name">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-table-column-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:visibility" a:defaultValue="visible">
+            <ref name="table-visibility-value"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-table-column-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:default-cell-style-name">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-table-header-columns">
+    <element name="table:table-header-columns">
+        <oneOrMore>
+            <ref name="table-table-column"/>
+        </oneOrMore>
+    </element>
+</define>
+
+<define name="table-table-columns">
+    <element name="table:table-columns">
+        <oneOrMore>
+            <ref name="table-table-column"/>
+        </oneOrMore>
+    </element>
+</define>
+<define name="table-table-column-group">
+    <element name="table:table-column-group">
+        <ref name="table-table-column-group-attlist"/>
+        <ref name="table-columns-and-groups"/>
+    </element>
+</define>
+<define name="table-table-column-group-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:display" a:defaultValue="true">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-table-header-rows">
+    <element name="table:table-header-rows">
+        <oneOrMore>
+            <optional>
+                <ref name="text-soft-page-break"/>
+            </optional>
+            <ref name="table-table-row"/>
+        </oneOrMore>
+    </element>
+</define>
+
+<define name="table-table-rows">
+    <element name="table:table-rows">
+        <oneOrMore>
+            <optional>
+                <ref name="text-soft-page-break"/>
+            </optional>
+            <ref name="table-table-row"/>
+        </oneOrMore>
+    </element>
+</define>
+<define name="table-table-row-group">
+    <element name="table:table-row-group">
+        <ref name="table-table-row-group-attlist"/>
+        <ref name="table-rows-and-groups"/>
+    </element>
+</define>
+<define name="table-table-row-group-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:display" a:defaultValue="true">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-table-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:is-sub-table" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="cellAddress">
+    <data type="string">
+        <param name="pattern">($?([^\. ']+|'([^']|'')+'))?\.$?[A-Z]+$?[0-9]+</param>
+
+    </data>
+</define>
+<define name="cellRangeAddress">
+    <data type="string">
+        <param name="pattern">($?([^\. ']+|'([^']|'')+'))?\.$?[A-Z]+$?[0-9]+(:($?([^\. ']+|'([^']|'')+'))?\.$?[A-Z]+$?[0-9]+)?</param>
+
+    </data>
+</define>
+<define name="cellRangeAddressList">
+    <!-- Value is a space separated list of "cellRangeAddress" patterns -->
+    <data type="string"/> 
+</define>
+<define name="table-table-source">
+    <element name="table:table-source">
+        <ref name="table-table-source-attlist"/>
+        <ref name="table-linked-source-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="table-table-source-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:mode" a:defaultValue="copy-all">
+            <choice>
+                <value>copy-all</value>
+                <value>copy-results-only</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="table-table-source-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:table-name">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-linked-source-attlist" combine="interleave">
+    <optional>
+        <attribute name="xlink:type" a:defaultValue="simple">
+            <value>simple</value>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="xlink:actuate" a:defaultValue="onRequest">
+            <value>onRequest</value>
+        </attribute>
+    </optional>
+    <attribute name="xlink:href">
+        <ref name="anyURI"/>
+    </attribute>
+</define>
+<define name="table-linked-source-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:filter-name">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-linked-source-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:filter-options">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-linked-source-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:refresh-delay">
+            <ref name="duration"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-scenario">
+    <element name="table:scenario">
+        <ref name="table-scenario-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="table-scenario-attlist" combine="interleave">
+    <attribute name="table:scenario-ranges">
+        <ref name="cellRangeAddressList"/>
+    </attribute>
+</define>
+<define name="table-scenario-attlist" combine="interleave">
+    <attribute name="table:is-active">
+        <ref name="boolean"/>
+    </attribute>
+</define>
+<define name="table-scenario-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:display-border" a:defaultValue="true">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-scenario-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:border-color">
+            <ref name="color"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-scenario-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:copy-back" a:defaultValue="true">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-scenario-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:copy-styles" a:defaultValue="true">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-scenario-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:copy-formulas" a:defaultValue="true">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-scenario-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:comment">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-scenario-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:protected">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-shapes">
+    <element name="table:shapes">
+        <oneOrMore>
+            <ref name="shape"/>
+        </oneOrMore>
+    </element>
+</define>
+<define name="table-cell-range-source">
+    <element name="table:cell-range-source">
+        <ref name="table-table-cell-range-source-attlist"/>
+        <ref name="table-linked-source-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="table-table-cell-range-source-attlist" combine="interleave">
+    <attribute name="table:name">
+        <ref name="string"/>
+    </attribute>
+</define>
+<define name="table-table-cell-range-source-attlist" combine="interleave">
+    <attribute name="table:last-column-spanned">
+        <ref name="positiveInteger"/>
+    </attribute>
+    <attribute name="table:last-row-spanned">
+        <ref name="positiveInteger"/>
+    </attribute>
+</define>
+<define name="table-detective">
+    <element name="table:detective">
+        <zeroOrMore>
+            <ref name="table-highlighted-range"/>
+        </zeroOrMore>
+        <zeroOrMore>
+            <ref name="table-operation"/>
+        </zeroOrMore>
+    </element>
+</define>
+<define name="table-operation">
+    <element name="table:operation">
+        <ref name="table-operation-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="table-operation-attlist" combine="interleave">
+    <attribute name="table:name">
+        <choice>
+            <value>trace-dependents</value>
+            <value>remove-dependents</value>
+            <value>trace-precedents</value>
+            <value>remove-precedents</value>
+            <value>trace-errors</value>
+        </choice>
+    </attribute>
+</define>
+<define name="table-operation-attlist" combine="interleave">
+    <attribute name="table:index">
+        <ref name="nonNegativeInteger"/>
+    </attribute>
+</define>
+<define name="table-highlighted-range">
+    <element name="table:highlighted-range">
+        <choice>
+            <group>
+                <ref name="table-highlighted-range-attlist"/>
+            </group>
+            <group>
+                <ref name="table-highlighted-range-attlist-invalid"/>
+            </group>
+        </choice>
+        <empty/>
+    </element>
+</define>
+<define name="table-highlighted-range-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:cell-range-address">
+            <ref name="cellRangeAddress"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-highlighted-range-attlist" combine="interleave">
+    <attribute name="table:direction">
+        <choice>
+            <value>from-another-table</value>
+            <value>to-another-table</value>
+            <value>from-same-table</value>
+        </choice>
+    </attribute>
+</define>
+<define name="table-highlighted-range-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:contains-error" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-highlighted-range-attlist-invalid" combine="interleave">
+    <attribute name="table:marked-invalid">
+        <ref name="boolean"/>
+    </attribute>
+</define>
+<define name="office-spreadsheet-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:structure-protected" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="table:protection-key">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-calculation-settings">
+    <element name="table:calculation-settings">
+        <ref name="table-calculation-setting-attlist"/>
+        <optional>
+            <ref name="table-null-date"/>
+        </optional>
+        <optional>
+            <ref name="table-iteration"/>
+        </optional>
+    </element>
+</define>
+<define name="table-calculation-setting-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:case-sensitive" a:defaultValue="true">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-calculation-setting-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:precision-as-shown" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-calculation-setting-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:search-criteria-must-apply-to-whole-cell"
+                     a:defaultValue="true">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-calculation-setting-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:automatic-find-labels" a:defaultValue="true">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-calculation-setting-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:use-regular-expressions"
+                     a:defaultValue="true">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-calculation-setting-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:null-year" a:defaultValue="1930">
+            <ref name="positiveInteger"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-null-date">
+    <element name="table:null-date">
+        <optional>
+            <attribute name="table:value-type" a:defaultValue="date">
+                <ref name="valueType"/>
+            </attribute>
+        </optional>
+        <optional>
+            <attribute name="table:date-value"
+                         a:defaultValue="1899-12-30">
+                <ref name="date"/>
+            </attribute>
+        </optional>
+        <empty/>
+    </element>
+</define>
+<define name="table-iteration">
+    <element name="table:iteration">
+        <optional>
+            <attribute name="table:status" a:defaultValue="disable">
+                <choice>
+                    <value>enable</value>
+                    <value>disable</value>
+                </choice>
+            </attribute>
+        </optional>
+        <optional>
+            <attribute name="table:steps" a:defaultValue="100">
+                <ref name="positiveInteger"/>
+            </attribute>
+        </optional>
+        <optional>
+            <attribute name="table:maximum-difference"
+                         a:defaultValue="0.001">
+                <ref name="double"/>
+            </attribute>
+        </optional>
+        <empty/>
+    </element>
+</define>
+<define name="table-content-validations">
+    <element name="table:content-validations">
+        <oneOrMore>
+            <ref name="table-content-validation"/>
+        </oneOrMore>
+    </element>
+</define>
+
+<define name="table-content-validation">
+    <element name="table:content-validation">
+        <ref name="table-validation-attlist"/>
+        <optional>
+            <ref name="table-help-message"/>
+        </optional>
+        <optional>
+            <choice>
+                <ref name="table-error-message"/>
+                <group>
+                    <ref name="table-error-macro"/>
+                    <optional>
+                        <ref name="office-event-listeners"/>
+                    </optional>
+                </group>
+            </choice>
+        </optional>
+    </element>
+</define>
+<define name="table-validation-attlist" combine="interleave">
+    <attribute name="table:name">
+        <ref name="string"/>
+    </attribute>
+</define>
+<define name="table-validation-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:condition">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-validation-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:base-cell-address">
+            <ref name="cellAddress"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-validation-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:allow-empty-cell" a:defaultValue="true">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-validation-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:display-list" a:defaultValue="unsorted">
+            <choice>
+                <value>none</value>
+                <value>unsorted</value>
+                <value>sort-ascending</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="table-help-message">
+    <element name="table:help-message">
+        <optional>
+            <attribute name="table:title">
+                <ref name="string"/>
+            </attribute>
+        </optional>
+        <optional>
+            <attribute name="table:display" a:defaultValue="false">
+                <ref name="boolean"/>
+            </attribute>
+        </optional>
+        <zeroOrMore>
+            <ref name="text-p"/>
+        </zeroOrMore>
+    </element>
+</define>
+<define name="table-error-message">
+    <element name="table:error-message">
+        <optional>
+            <attribute name="table:title">
+                <ref name="string"/>
+            </attribute>
+        </optional>
+        <optional>
+            <attribute name="table:display" a:defaultValue="false">
+                <ref name="boolean"/>
+            </attribute>
+        </optional>
+        <optional>
+            <attribute name="table:message-type" a:defaultValue="stop">
+                <choice>
+                    <value>stop</value>
+                    <value>warning</value>
+                    <value>information</value>
+                </choice>
+            </attribute>
+        </optional>
+        <zeroOrMore>
+            <ref name="text-p"/>
+        </zeroOrMore>
+    </element>
+</define>
+<define name="table-error-macro">
+    <element name="table:error-macro">
+        <optional>
+            <attribute name="table:execute" a:defaultValue="true">
+                <ref name="boolean"/>
+            </attribute>
+        </optional>
+    </element>
+</define>
+<define name="table-label-ranges">
+    <element name="table:label-ranges">
+        <zeroOrMore>
+            <ref name="table-label-range"/>
+        </zeroOrMore>
+    </element>
+</define>
+
+<define name="table-label-range">
+    <element name="table:label-range">
+        <ref name="table-label-range-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="table-label-range-attlist" combine="interleave">
+    <attribute name="table:label-cell-range-address">
+        <ref name="cellRangeAddress"/>
+    </attribute>
+</define>
+<define name="table-label-range-attlist" combine="interleave">
+    <attribute name="table:data-cell-range-address">
+        <ref name="cellRangeAddress"/>
+    </attribute>
+</define>
+<define name="table-label-range-attlist" combine="interleave">
+    <attribute name="table:orientation">
+        <choice>
+            <value>column</value>
+            <value>row</value>
+        </choice>
+    </attribute>
+</define>
+<define name="table-named-expressions">
+    <element name="table:named-expressions">
+        <zeroOrMore>
+            <choice>
+                <ref name="table-named-range"/>
+                <ref name="table-named-expression"/>
+            </choice>
+        </zeroOrMore>
+    </element>
+</define>
+
+<define name="table-named-range">
+    <element name="table:named-range">
+        <ref name="table-named-range-attlist"/>
+        <empty/>
+    </element>
+</define>
+
+<define name="table-named-range-attlist" combine="interleave">
+    <attribute name="table:name">
+        <ref name="string"/>
+    </attribute>
+    <attribute name="table:cell-range-address">
+        <ref name="cellRangeAddress"/>
+    </attribute>
+    <optional>
+        <attribute name="table:base-cell-address">
+            <ref name="cellAddress"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="table:range-usable-as" a:defaultValue="none">
+            <choice>
+                <value>none</value>
+                <list>
+                    <oneOrMore>
+                        <choice>
+                            <value>print-range</value>
+                            <value>filter</value>
+                            <value>repeat-row</value>
+                            <value>repeat-column</value>
+                        </choice>
+                    </oneOrMore>
+                </list>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="table-named-expression">
+    <element name="table:named-expression">
+        <ref name="table-named-expression-attlist"/>
+        <empty/>
+    </element>
+</define>
+
+<define name="table-named-expression-attlist" combine="interleave">
+    <attribute name="table:name">
+        <ref name="string"/>
+    </attribute>
+    <attribute name="table:expression">
+        <ref name="string"/>
+    </attribute>
+    <optional>
+        <attribute name="table:base-cell-address">
+            <ref name="cellAddress"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-database-ranges">
+    <element name="table:database-ranges">
+        <zeroOrMore>
+            <ref name="table-database-range"/>
+        </zeroOrMore>
+    </element>
+</define>
+<define name="table-database-range">
+    <element name="table:database-range">
+        <ref name="table-database-range-attlist"/>
+        <optional>
+            <choice>
+                <ref name="table-database-source-sql"/>
+                <ref name="table-database-source-table"/>
+                <ref name="table-database-source-query"/>
+            </choice>
+        </optional>
+        <optional>
+            <ref name="table-filter"/>
+        </optional>
+        <optional>
+            <ref name="table-sort"/>
+        </optional>
+        <optional>
+            <ref name="table-subtotal-rules"/>
+        </optional>
+    </element>
+</define>
+<define name="table-database-range-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:name">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-database-range-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:is-selection" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-database-range-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:on-update-keep-styles" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-database-range-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:on-update-keep-size" a:defaultValue="true">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-database-range-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:has-persistent-data" a:defaultValue="true">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-database-range-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:orientation" a:defaultValue="row">
+            <choice>
+                <value>column</value>
+                <value>row</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="table-database-range-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:contains-header" a:defaultValue="true">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-database-range-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:display-filter-buttons"
+                   a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-database-range-attlist" combine="interleave">
+    <attribute name="table:target-range-address">
+        <ref name="cellRangeAddress"/>
+    </attribute>
+</define>
+<define name="table-database-range-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:refresh-delay">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-database-source-sql">
+    <element name="table:database-source-sql">
+        <ref name="table-database-source-sql-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="table-database-source-sql-attlist" combine="interleave">
+    <attribute name="table:database-name">
+        <ref name="string"/>
+    </attribute>
+</define>
+<define name="table-database-source-sql-attlist" combine="interleave">
+    <attribute name="table:sql-statement">
+        <ref name="string"/>
+    </attribute>
+</define>
+<define name="table-database-source-sql-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:parse-sql-statement" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-database-source-query">
+    <element name="table:database-source-table">
+        <ref name="table-database-source-table-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="table-database-source-table-attlist" combine="interleave">
+    <attribute name="table:database-name">
+        <ref name="string"/>
+    </attribute>
+</define>
+<define name="table-database-source-table-attlist" combine="interleave">
+    <attribute name="table:database-table-name">
+        <ref name="string"/>
+    </attribute>
+</define>
+<define name="table-database-source-table">
+    <element name="table:database-source-query">
+        <ref name="table-database-source-query-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="table-database-source-query-attlist" combine="interleave">
+    <attribute name="table:database-name">
+        <ref name="string"/>
+    </attribute>
+</define>
+<define name="table-database-source-query-attlist" combine="interleave">
+    <attribute name="table:query-name">
+        <ref name="string"/>
+    </attribute>
+</define>
+<define name="table-sort">
+    <element name="table:sort">
+        <ref name="table-sort-attlist"/>
+        <oneOrMore>
+            <ref name="table-sort-by"/>
+        </oneOrMore>
+    </element>
+</define>
+<define name="table-sort-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:bind-styles-to-content" a:defaultValue="true">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-sort-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:target-range-address">
+            <ref name="cellRangeAddress"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-sort-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:case-sensitive" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-sort-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:language">
+            <ref name="languageCode"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-sort-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:country">
+            <ref name="countryCode"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-sort-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:algorithm">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-sort-by">
+    <element name="table:sort-by">
+        <ref name="table-sort-by-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="table-sort-by-attlist" combine="interleave">
+    <attribute name="table:field-number">
+        <ref name="nonNegativeInteger"/>
+    </attribute>
+</define>
+<define name="table-sort-by-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:data-type" a:defaultValue="automatic">
+            <choice>
+                <value>text</value>
+                <value>number</value>
+                <value>automatic</value>
+                <ref name="string"/>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="table-sort-by-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:order" a:defaultValue="ascending">
+            <choice>
+                <value>ascending</value>
+                <value>descending</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="table-subtotal-rules">
+    <element name="table:subtotal-rules">
+        <ref name="table-subtotal-rules-attlist"/>
+        <optional>
+            <ref name="table-sort-groups"/>
+        </optional>
+        <zeroOrMore>
+            <ref name="table-subtotal-rule"/>
+        </zeroOrMore>
+    </element>
+</define>
+<define name="table-subtotal-rules-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:bind-styles-to-content" a:defaultValue="true">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-subtotal-rules-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:case-sensitive" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-subtotal-rules-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:page-breaks-on-group-change"
+                   a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-sort-groups">
+    <element name="table:sort-groups">
+        <ref name="table-sort-groups-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="table-sort-groups-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:data-type" a:defaultValue="automatic">
+            <choice>
+                <value>text</value>
+                <value>number</value>
+                <value>automatic</value>
+                <ref name="string"/>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="table-sort-groups-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:order" a:defaultValue="ascending">
+            <choice>
+                <value>ascending</value>
+                <value>descending</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="table-subtotal-rule">
+    <element name="table:subtotal-rule">
+        <ref name="table-subtotal-rule-attlist"/>
+        <zeroOrMore>
+            <ref name="table-subtotal-field"/>
+        </zeroOrMore>
+    </element>
+</define>
+<define name="table-subtotal-rule-attlist" combine="interleave">
+    <attribute name="table:group-by-field-number">
+        <ref name="nonNegativeInteger"/>
+    </attribute>
+</define>
+<define name="table-subtotal-field">
+    <element name="table:subtotal-field">
+        <ref name="table-subtotal-field-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="table-subtotal-field-attlist" combine="interleave">
+    <attribute name="table:field-number">
+        <ref name="nonNegativeInteger"/>
+    </attribute>
+</define>
+<define name="table-subtotal-field-attlist" combine="interleave">
+    <attribute name="table:function">
+        <choice>
+            <value>auto</value>
+            <value>average</value>
+            <value>count</value>
+            <value>countnums</value>
+            <value>max</value>
+            <value>min</value>
+            <value>product</value>
+            <value>stdev</value>
+            <value>stdevp</value>
+            <value>sum</value>
+            <value>var</value>
+            <value>varp</value>
+            <ref name="string"/>
+        </choice>
+    </attribute>
+</define>
+<define name="table-filter">
+    <element name="table:filter">
+        <ref name="table-filter-attlist"/>
+        <choice>
+            <ref name="table-filter-condition"/>
+            <ref name="table-filter-and"/>
+            <ref name="table-filter-or"/>
+        </choice>
+    </element>
+</define>
+<define name="table-filter-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:target-range-address">
+            <ref name="cellRangeAddress"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-filter-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:condition-source" a:defaultValue="self">
+            <choice>
+                <value>self</value>
+                <value>cell-range</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="table-filter-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:condition-source-range-address">
+            <ref name="cellRangeAddress"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-filter-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:display-duplicates" a:defaultValue="true">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-filter-and">
+    <element name="table:filter-and">
+        <oneOrMore>
+            <choice>
+                <ref name="table-filter-or"/>
+                <ref name="table-filter-condition"/>
+            </choice>
+        </oneOrMore>
+    </element>
+</define>
+<define name="table-filter-or">
+    <element name="table:filter-or">
+        <oneOrMore>
+            <choice>
+                <ref name="table-filter-and"/>
+                <ref name="table-filter-condition"/>
+            </choice>
+        </oneOrMore>
+    </element>
+</define>
+<define name="table-filter-condition">
+    <element name="table:filter-condition">
+        <ref name="table-filter-condition-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="table-filter-condition-attlist" combine="interleave">
+    <attribute name="table:field-number">    
+        <ref name="nonNegativeInteger"/>
+    </attribute>
+</define>
+<define name="table-filter-condition-attlist" combine="interleave">
+    <attribute name="table:value">    
+        <ref name="string"/>
+    </attribute>
+</define>
+<define name="table-filter-condition-attlist" combine="interleave">
+    <attribute name="table:operator">    
+        <ref name="string"/>
+    </attribute>
+</define>
+<define name="table-filter-condition-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:case-sensitive" a:defaultValue="false">    
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-filter-condition-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:data-type" a:defaultValue="text">
+            <choice>
+                <value>text</value>
+                <value>number</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="table-data-pilot-tables">
+    <element name="table:data-pilot-tables">
+        <zeroOrMore>
+            <ref name="table-data-pilot-table"/>
+        </zeroOrMore>
+    </element>
+</define>
+<define name="table-data-pilot-table">
+    <element name="table:data-pilot-table">
+        <ref name="table-data-pilot-table-attlist"/>
+        <optional>
+            <choice>
+                <ref name="table-database-source-sql"/>
+                <ref name="table-database-source-table"/>
+                <ref name="table-database-source-query"/>
+                <ref name="table-source-service"/>
+                <ref name="table-source-cell-range"/>
+            </choice>
+        </optional>
+        <oneOrMore>
+            <ref name="table-data-pilot-field"/>
+        </oneOrMore>
+    </element>
+</define>
+<define name="table-data-pilot-table-attlist" combine="interleave">
+    <attribute name="table:name">
+        <ref name="string"/>
+    </attribute>
+</define>
+<define name="table-data-pilot-table-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:application-data">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-data-pilot-table-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:grand-total" a:defaultValue="both">
+            <choice>
+                <value>none</value>
+                <value>row</value>
+                <value>column</value>
+                <value>both</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="table-data-pilot-table-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:ignore-empty-rows" a:defaultValue="false">    
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-data-pilot-table-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:identify-categories" a:defaultValue="false">    
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-data-pilot-table-attlist" combine="interleave">
+    <attribute name="table:target-range-address">    
+        <ref name="cellRangeAddress"/>
+    </attribute>
+</define>
+<define name="table-data-pilot-table-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:buttons">    
+            <ref name="cellRangeAddressList"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-data-pilot-table-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:show-filter-button" a:defaultValue="true">    
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-data-pilot-table-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:drill-down-on-double-click"
+                   a:defaultValue="true">    
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-source-cell-range">
+    <element name="table:source-cell-range">
+        <ref name="table-source-cell-range-attlist"/>
+        <optional>
+            <ref name="table-filter"/>
+        </optional>
+    </element>
+</define>
+<define name="table-source-cell-range-attlist" combine="interleave">
+    <attribute name="table:cell-range-address">    
+        <ref name="cellRangeAddress"/>
+    </attribute>
+</define>
+<define name="table-source-service">
+    <element name="table:source-service">
+        <ref name="table-source-service-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="table-source-service-attlist" combine="interleave">
+    <attribute name="table:name">    
+        <ref name="string"/>
+    </attribute>
+</define>
+<define name="table-source-service-attlist" combine="interleave">
+    <attribute name="table:source-name">
+        <ref name="string"/>
+    </attribute>
+</define>
+<define name="table-source-service-attlist" combine="interleave">
+    <attribute name="table:object-name">
+        <ref name="string"/>
+    </attribute>
+</define>
+<define name="table-source-service-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:user-name">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-source-service-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:password">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-data-pilot-field">
+    <element name="table:data-pilot-field">
+        <ref name="table-data-pilot-field-attlist"/>
+        <optional>
+            <ref name="table-data-pilot-level"/>
+        </optional>
+        <optional>
+            <ref name="table-data-pilot-field-reference"/>
+        </optional>
+        <optional>
+            <ref name="table-data-pilot-groups"/>
+        </optional>
+    </element>
+</define>
+<define name="table-data-pilot-field-attlist" combine="interleave">
+    <attribute name="table:source-field-name">    
+        <ref name="string"/>
+    </attribute>
+</define>
+<define name="table-data-pilot-field-attlist" combine="interleave">
+    <choice>
+        <attribute name="table:orientation">    
+            <choice>
+                <value>row</value>
+                <value>column</value>
+                <value>data</value>
+                <value>hidden</value>
+            </choice>
+        </attribute>
+        <group>
+            <attribute name="table:orientation">
+                <value>page</value>
+            </attribute>
+            <attribute name="table:selected-page">
+                <ref name="string"/>
+            </attribute>
+        </group>
+    </choice>
+</define>
+<define name="table-data-pilot-field-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:is-data-layout-field" a:defaultValue="false">    
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-data-pilot-field-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:function">
+            <choice>
+                <value>auto</value>
+                <value>average</value>
+                <value>count</value>
+                <value>countnums</value>
+                <value>max</value>
+                <value>min</value>
+                <value>product</value>
+                <value>stdev</value>
+                <value>stdevp</value>
+                <value>sum</value>
+                <value>var</value>
+                <value>varp</value>
+                <ref name="string"/>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="table-data-pilot-field-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:used-hierarchy" a:defaultValue="-1">    
+            <ref name="integer"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-data-pilot-level">
+    <element name="table:data-pilot-level">
+        <ref name="table-data-pilot-level-attlist"/>
+        <optional>
+            <ref name="table-data-pilot-subtotals"/>
+        </optional>
+        <optional>
+            <ref name="table-data-pilot-members"/>
+        </optional>
+        <optional>
+            <ref name="table-data-pilot-display-info"/>
+        </optional>
+        <optional>
+            <ref name="table-data-pilot-sort-info"/>
+        </optional>
+        <optional>
+            <ref name="table-data-pilot-layout-info"/>
+        </optional>
+    </element>
+</define>
+<define name="table-data-pilot-level-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:show-empty">    
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-data-pilot-subtotals">
+    <element name="table:data-pilot-subtotals">
+        <zeroOrMore>
+            <ref name="table-data-pilot-subtotal"/>
+        </zeroOrMore>
+    </element>
+</define>
+<define name="table-data-pilot-subtotal">
+    <element name="table:data-pilot-subtotal">
+        <ref name="table-data-pilot-subtotal-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="table-data-pilot-subtotal-attlist" combine="interleave">
+    <attribute name="table:function">
+        <choice>
+            <value>auto</value>
+            <value>average</value>
+            <value>count</value>
+            <value>countnums</value>
+            <value>max</value>
+            <value>min</value>
+            <value>product</value>
+            <value>stdev</value>
+            <value>stdevp</value>
+            <value>sum</value>
+            <value>var</value>
+            <value>varp</value>
+            <ref name="string"/>
+        </choice>
+    </attribute>
+</define>
+<define name="table-data-pilot-members">
+    <element name="table:data-pilot-members">
+        <zeroOrMore>
+            <ref name="table-data-pilot-member"/>
+        </zeroOrMore>
+    </element>
+</define>
+<define name="table-data-pilot-member">
+    <element name="table:data-pilot-member">
+        <ref name="table-data-pilot-member-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="table-data-pilot-member-attlist" combine="interleave">
+    <attribute name="table:name">
+        <ref name="string"/>
+    </attribute>
+</define>
+<define name="table-data-pilot-member-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:display">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-data-pilot-member-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:show-details">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-data-pilot-display-info">
+    <element name="table:data-pilot-display-info">
+        <ref name="table-data-pilot-display-info-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="table-data-pilot-display-info-attlist" combine="interleave">
+    <attribute name="table:enabled">
+        <ref name="boolean"/>
+    </attribute>
+</define>
+<define name="table-data-pilot-display-info-attlist" combine="interleave">
+    <attribute name="table:data-field">
+        <ref name="string"/>
+    </attribute>
+</define>
+<define name="table-data-pilot-display-info-attlist" combine="interleave">
+    <attribute name="table:member-count">
+        <ref name="nonNegativeInteger"/>
+    </attribute>
+</define>
+<define name="table-data-pilot-display-info-attlist" combine="interleave">
+    <attribute name="table:display-member-mode">
+        <choice>
+            <value>from-top</value>
+            <value>from-bottom</value>
+        </choice>
+    </attribute>
+</define>
+<define name="table-data-pilot-sort-info">
+    <element name="table:data-pilot-sort-info">
+        <ref name="table-data-pilot-sort-info-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="table-data-pilot-sort-info-attlist" combine="interleave">
+    <choice>
+        <group>
+            <attribute name="table:sort-mode">
+                <value>data</value>
+            </attribute>
+            <attribute name="table:data-field">
+                <ref name="string"/>
+            </attribute>
+        </group>
+        <attribute name="table:sort-mode">
+            <choice>
+                <value>none</value>
+                <value>manual</value>
+                <value>name</value>
+            </choice>
+        </attribute>
+    </choice>
+</define>
+<define name="table-data-pilot-sort-info-attlist" combine="interleave">
+    <attribute name="table:order">
+        <choice>
+            <value>ascending</value>
+            <value>descending</value>
+        </choice>
+    </attribute>
+</define>
+<define name="table-data-pilot-layout-info">
+    <element name="table:data-pilot-layout-info">
+        <ref name="table-data-pilot-layout-info-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="table-data-pilot-layout-info-attlist" combine="interleave">
+    <attribute name="table:layout-mode">
+        <choice>
+            <value>tabular-layout</value>
+            <value>outline-subtotals-top</value>
+            <value>outline-subtotals-bottom</value>
+        </choice>
+    </attribute>
+</define>
+<define name="table-data-pilot-layout-info-attlist" combine="interleave">
+    <attribute name="table:add-empty-lines">
+        <ref name="boolean"/>
+    </attribute>
+</define>
+<define name="table-data-pilot-field-reference">
+    <element name="table:data-pilot-field-reference">
+        <ref name="table-data-pilot-field-reference-attlist"/>
+    </element>
+</define>
+<define name="table-data-pilot-field-reference-attlist" combine="interleave">
+    <attribute name="table:field-name">
+        <ref name="string"/>
+    </attribute>
+</define>
+<define name="table-data-pilot-field-reference-attlist" combine="interleave">
+    <choice>
+        <group>
+            <attribute name="table:member-type">
+                <value>named</value>
+            </attribute>
+            <attribute name="table:member-name">
+                <ref name="string"/>
+            </attribute>
+        </group>
+        <attribute name="table:member-type">
+            <choice>
+                <value>previous</value>
+                <value>next</value>
+            </choice>
+        </attribute>
+    </choice>
+</define>
+<define name="table-data-pilot-field-reference-attlist" combine="interleave">
+    <attribute name="table:type">
+        <choice>
+            <value>none</value>
+            <value>member-difference</value>
+            <value>member-percentage</value>
+            <value>member-percentage-difference</value>
+            <value>running-total</value>
+            <value>row-percentage</value>
+            <value>column-percentage</value>
+            <value>total-percentage</value>
+            <value>index</value>
+        </choice>
+    </attribute>
+</define>
+<define name="table-data-pilot-groups">
+    <element name="table:data-pilot-groups">
+        <ref name="table-data-pilot-groups-attlist"/>
+        <oneOrMore>
+            <ref name="table-data-pilot-group"/>
+        </oneOrMore>
+    </element>
+</define>
+<define name="table-data-pilot-groups-attlist" combine="interleave">
+    <attribute name="table:source-field-name">
+        <ref name="string"/>
+    </attribute>
+</define>
+<define name="table-data-pilot-groups-attlist" combine="interleave">
+    <choice>
+        <attribute name="table:date-start">
+            <choice>
+                <ref name="dateOrDateTime"/>
+                <value>auto</value>
+            </choice>
+        </attribute>
+        <attribute name="table:start">
+            <choice>
+                <ref name="double"/>
+                <value>auto</value>
+            </choice>
+        </attribute>
+    </choice>
+</define>
+<define name="table-data-pilot-groups-attlist" combine="interleave">
+    <choice>
+        <attribute name="table:date-end">
+            <choice>
+                <ref name="dateOrDateTime"/>
+                <value>auto</value>
+            </choice>
+        </attribute>
+        <attribute name="table:end">
+            <choice>
+                <ref name="double"/>
+                <value>auto</value>
+            </choice>
+        </attribute>
+    </choice>
+</define>
+<define name="table-data-pilot-groups-attlist" combine="interleave">
+    <attribute name="table:step">
+        <ref name="double"/>
+    </attribute>
+</define>
+<define name="table-data-pilot-groups-attlist" combine="interleave">
+    <attribute name="table:grouped-by">
+        <choice>
+            <value>seconds</value>
+            <value>minutes</value>
+            <value>hours</value>
+            <value>days</value>
+            <value>months</value>
+            <value>quarters</value>
+            <value>years</value>
+        </choice>
+    </attribute>
+</define>
+<define name="table-data-pilot-group">
+    <element name="table:data-pilot-group">
+        <ref name="table-data-pilot-group-attlist"/>
+        <oneOrMore>
+            <ref name="table-data-pilot-group-member"/>
+        </oneOrMore>
+    </element>
+</define>
+<define name="table-data-pilot-group-attlist" combine="interleave">
+    <attribute name="table:name">
+        <ref name="string"/>
+    </attribute>
+</define>
+<define name="table-data-pilot-group-member">
+    <element name="table:data-pilot-group-member">
+        <ref name="table-data-pilot-group-member-attlist"/>
+    </element>
+</define>
+<define name="table-data-pilot-group-member-attlist" combine="interleave">
+    <attribute name="table:name">
+        <ref name="string"/>
+    </attribute>
+</define>
+<define name="table-consolidation">
+    <element name="table:consolidation">
+        <ref name="table-consolidation-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="table-consolidation-attlist" combine="interleave">
+    <attribute name="table:function">    
+        <choice>
+            <value>auto</value>
+            <value>average</value>
+            <value>count</value>
+            <value>countnums</value>
+            <value>max</value>
+            <value>min</value>
+            <value>product</value>
+            <value>stdev</value>
+            <value>stdevp</value>
+            <value>sum</value>
+            <value>var</value>
+            <value>varp</value>
+            <ref name="string"/>
+        </choice>
+    </attribute>
+</define>
+<define name="table-consolidation-attlist" combine="interleave">
+    <attribute name="table:source-cell-range-addresses">    
+        <ref name="cellRangeAddressList"/>
+    </attribute>
+</define>
+<define name="table-consolidation-attlist" combine="interleave">
+    <attribute name="table:target-cell-address">    
+        <ref name="cellAddress"/>
+    </attribute>
+</define>
+<define name="table-consolidation-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:use-labels" a:defaultValue="none">
+            <choice>
+                <value>none</value>
+                <value>row</value>
+                <value>column</value>
+                <value>both</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="table-consolidation-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:link-to-source-data" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-dde-links">
+    <element name="table:dde-links">
+        <oneOrMore>
+            <ref name="table-dde-link"/>
+        </oneOrMore>
+    </element>
+</define>
+<define name="table-tracked-changes">
+    <element name="table:tracked-changes">
+        <ref name="table-tracked-changes-attlist"/>
+        <zeroOrMore>
+            <choice>
+                <ref name="table-cell-content-change"/>
+                <ref name="table-insertion"/>
+                <ref name="table-deletion"/>
+                <ref name="table-movement"/>
+            </choice>
+        </zeroOrMore>
+    </element>
+</define>
+<define name="table-tracked-changes-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:track-changes" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-insertion">
+    <element name="table:insertion">
+        <ref name="table-insertion-attlist"/>
+        <ref name="common-table-change-attlist"/>
+        <ref name="office-change-info"/>
+        <optional>
+            <ref name="table-dependencies"/>
+        </optional>
+        <optional>
+            <ref name="table-deletions"/>
+        </optional>
+    </element>
+</define>
+<define name="table-insertion-attlist" combine="interleave">
+    <attribute name="table:type">
+        <choice>
+            <value>row</value>
+            <value>column</value>
+            <value>table</value>
+        </choice>
+    </attribute>
+</define>
+<define name="table-insertion-attlist" combine="interleave">
+    <attribute name="table:position">
+        <ref name="integer"/>
+    </attribute>
+</define>
+<define name="table-insertion-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:count" a:defaultValue="1">
+            <ref name="positiveInteger"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-insertion-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:table">
+            <ref name="integer"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-dependencies">
+    <element name="table:dependencies">
+        <oneOrMore>
+            <ref name="table-dependency"/>
+        </oneOrMore>
+    </element>
+</define>
+<define name="table-dependency">
+    <element name="table:dependency">
+        <attribute name="table:id">
+            <ref name="string"/>
+        </attribute>
+        <empty/>
+    </element>
+</define>
+<define name="table-deletions">
+    <element name="table:deletions">
+        <oneOrMore>
+            <choice>
+                <ref name="table-cell-content-deletion"/>
+                <ref name="table-change-deletion"/>
+            </choice>
+        </oneOrMore>
+    </element>
+</define>
+<define name="table-cell-content-deletion">
+    <element name="table:cell-content-deletion">
+        <optional>
+            <attribute name="table:id">
+                <ref name="string"/>
+            </attribute>
+        </optional>
+        <optional>
+            <ref name="table-cell-address"/>
+        </optional>
+        <optional>
+            <ref name="table-change-track-table-cell"/>
+        </optional>
+    </element>
+</define>
+<define name="table-change-deletion">
+    <element name="table:change-deletion">
+        <optional>
+            <attribute name="table:id">
+                <ref name="string"/>
+            </attribute>
+        </optional>
+        <empty/>
+    </element>
+</define>
+<define name="table-deletion">
+    <element name="table:deletion">
+        <ref name="table-deletion-attlist"/>
+        <ref name="common-table-change-attlist"/>
+        <ref name="office-change-info"/>
+        <optional>
+            <ref name="table-dependencies"/>
+        </optional>
+        <optional>
+            <ref name="table-deletions"/>
+        </optional>
+        <optional>
+            <ref name="table-cut-offs"/>
+        </optional>
+    </element>
+</define>
+<define name="table-deletion-attlist" combine="interleave">
+    <attribute name="table:type">
+        <choice>
+            <value>row</value>
+            <value>column</value>
+            <value>table</value>
+        </choice>
+    </attribute>
+</define>
+<define name="table-deletion-attlist" combine="interleave">
+    <attribute name="table:position">
+        <ref name="integer"/>
+    </attribute>
+</define>
+<define name="table-deletion-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:table">
+            <ref name="integer"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-deletion-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:multi-deletion-spanned">
+            <ref name="integer"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-cut-offs">
+    <element name="table:cut-offs">
+        <choice>
+            <oneOrMore>
+                <ref name="table-movement-cut-off"/>
+            </oneOrMore>
+            <group>
+                <ref name="table-insertion-cut-off"/>
+                <zeroOrMore>
+                    <ref name="table-movement-cut-off"/>
+                </zeroOrMore>
+            </group>
+        </choice>
+    </element>
+</define>
+<define name="table-insertion-cut-off">
+    <element name="table:insertion-cut-off">
+        <ref name="table-insertion-cut-off-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="table-insertion-cut-off-attlist" combine="interleave">
+    <attribute name="table:id">
+        <ref name="string"/>
+    </attribute>
+</define>
+<define name="table-insertion-cut-off-attlist" combine="interleave">
+    <attribute name="table:position">
+        <ref name="integer"/>
+    </attribute>
+</define>
+<define name="table-movement-cut-off">
+    <element name="table:movement-cut-off">
+        <ref name="table-movement-cut-off-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="table-movement-cut-off-attlist" combine="interleave">
+    <choice>
+        <attribute name="table:position">
+            <ref name="integer"/>
+        </attribute>
+        <group>
+            <attribute name="table:start-position">
+                <ref name="integer"/>
+            </attribute>
+            <attribute name="table:end-position">
+                <ref name="integer"/>
+            </attribute>
+        </group>
+    </choice>
+</define>
+<define name="table-movement">
+    <element name="table:movement">
+        <ref name="common-table-change-attlist"/>
+        <ref name="table-source-range-address"/>
+        <ref name="table-target-range-address"/>
+        <ref name="office-change-info"/>
+        <optional>
+            <ref name="table-dependencies"/>
+        </optional>
+        <optional>
+            <ref name="table-deletions"/>
+        </optional>
+    </element>
+</define>
+<define name="table-source-range-address">
+    <element name="table:source-range-address">
+        <ref name="common-table-range-attlist"/>
+        <empty/>
+    </element>
+</define>
+
+<define name="table-target-range-address">
+    <element name="table:target-range-address">
+        <ref name="common-table-range-attlist"/>
+        <empty/>
+    </element>
+</define>
+
+
+<define name="common-table-range-attlist" combine="interleave">
+    <choice>
+        <group>
+            <ref name="common-table-cell-address-attlist"/>
+        </group>
+        <group>
+            <ref name="common-table-cell-range-address-attlist"/>
+        </group>
+    </choice>
+</define>
+<define name="common-table-cell-address-attlist" combine="interleave">
+    <attribute name="table:column">
+        <ref name="integer"/>
+    </attribute>
+    <attribute name="table:row">
+        <ref name="integer"/>
+    </attribute>
+    <attribute name="table:table">
+        <ref name="integer"/>
+    </attribute>
+</define>
+<define name="common-table-cell-range-address-attlist" combine="interleave">
+    <attribute name="table:start-column">
+        <ref name="integer"/>
+    </attribute>
+    <attribute name="table:start-row">
+        <ref name="integer"/>
+    </attribute>
+    <attribute name="table:start-table">
+        <ref name="integer"/>
+    </attribute>
+    <attribute name="table:end-column">
+        <ref name="integer"/>
+    </attribute>
+    <attribute name="table:end-row">
+        <ref name="integer"/>
+    </attribute>
+    <attribute name="table:end-table">
+        <ref name="integer"/>
+    </attribute>
+</define>
+<define name="table-change-track-table-cell" combine="interleave">
+    <element name="table:change-track-table-cell">
+        <ref name="table-change-track-table-cell-attlist"/>
+        <zeroOrMore>
+            <ref name="text-p"/>
+        </zeroOrMore>
+    </element>
+</define>
+<define name="table-change-track-table-cell-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:cell-address">
+            <ref name="cellAddress"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-change-track-table-cell-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:matrix-covered" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-change-track-table-cell-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:formula">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="table:number-matrix-columns-spanned">
+            <ref name="positiveInteger"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="table:number-matrix-rows-spanned">
+            <ref name="positiveInteger"/>
+        </attribute>
+    </optional>
+    <optional>
+        <ref name="common-value-and-type-attlist"/>
+    </optional>
+</define>
+<define name="table-cell-content-change">
+    <element name="table:cell-content-change">
+        <ref name="common-table-change-attlist"/>
+        <ref name="table-cell-address"/>
+        <ref name="office-change-info"/>
+        <optional>
+            <ref name="table-dependencies"/>
+        </optional>
+        <optional>
+            <ref name="table-deletions"/>
+        </optional>
+        <ref name="table-previous"/>
+    </element>
+</define>
+<define name="table-cell-address">
+    <element name="table:cell-address">
+        <ref name="common-table-cell-address-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="table-previous">
+    <element name="table:previous">
+        <optional>
+            <attribute name="table:id">
+                <ref name="string"/>
+            </attribute>
+        </optional>
+        <ref name="table-change-track-table-cell"/>
+    </element>
+</define>
+<define name="common-table-change-attlist" combine="interleave">
+    <attribute name="table:id">
+        <ref name="string"/>
+    </attribute>
+</define>
+<define name="common-table-change-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:acceptance-state" a:defaultValue="pending">
+            <choice>
+                <value>accepted</value>
+                <value>rejected</value>
+                <value>pending</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="common-table-change-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:rejecting-change-id">
+            <ref name="string"/> 
+        </attribute>
+    </optional>
+</define>
+<define name="style-handout-master">
+    <element name="style:handout-master">
+        <ref name="common-presentation-header-footer-attlist"/>
+        <ref name="style-handout-master-attlist"/>
+        <zeroOrMore>
+            <ref name="shape"/>
+        </zeroOrMore>
+    </element>
+</define>
+<define name="style-handout-master-attlist" combine="interleave">
+    <optional>
+        <attribute name="presentation:presentation-page-layout-name">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-handout-master-attlist" combine="interleave">
+    <attribute name="style:page-layout-name">
+        <ref name="styleNameRef"/>
+    </attribute>
+</define>
+<define name="style-handout-master-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:style-name">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-layer-set">
+    <element name="draw:layer-set">
+        <zeroOrMore>
+            <ref name="draw-layer"/>
+        </zeroOrMore>
+    </element>
+</define>
+<define name="draw-layer">
+    <element name="draw:layer">
+        <ref name="draw-layer-attlist"/>
+        <optional>
+            <ref name="svg-title"/>
+        </optional>
+        <optional>
+            <ref name="svg-desc"/>
+        </optional>
+    </element>
+</define>
+<define name="draw-layer-attlist" combine="interleave">
+    <attribute name="draw:name">
+        <ref name="string"/>
+    </attribute>
+</define>
+<define name="draw-layer-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:protected" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-layer-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:display" a:defaultValue="always">
+            <choice>
+                <value>always</value>
+                <value>screen</value>
+                <value>printer</value>
+                <value>none</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-page">
+    <element name="draw:page">
+        <ref name="common-presentation-header-footer-attlist"/>
+        <ref name="draw-page-attlist"/>
+        <optional>
+            <ref name="office-forms"/>
+        </optional>
+        <zeroOrMore>
+            <ref name="shape"/>
+        </zeroOrMore>
+        <optional>
+            <choice>
+                <ref name="presentation-animations"/>
+                <ref name="animation-element"/>
+            </choice>
+        </optional>
+        <optional>
+            <ref name="presentation-notes"/>
+        </optional>
+    </element>
+</define>
+<define name="draw-page-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:name">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-page-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:style-name">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-page-attlist" combine="interleave">
+    <attribute name="draw:master-page-name">
+        <ref name="styleNameRef"/>
+    </attribute>
+</define>
+<define name="draw-page-attlist" combine="interleave">
+    <optional>
+        <attribute name="presentation:presentation-page-layout-name">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-presentation-header-footer-attlist" combine="interleave">
+    <optional>
+        <attribute name="presentation:use-header-name">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-presentation-header-footer-attlist" combine="interleave">
+    <optional>
+        <attribute name="presentation:use-footer-name">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-presentation-header-footer-attlist" combine="interleave">
+    <optional>
+        <attribute name="presentation:use-date-time-name">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-page-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:id">
+            <ref name="ID"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-page-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:nav-order">
+            <ref name="IDREFS"/>
+        </attribute>
+    </optional>
+</define>
+<define name="shape">
+    <choice>
+        <ref name="draw-rect"/>
+        <ref name="draw-line"/>
+        <ref name="draw-polyline"/>
+        <ref name="draw-polygon"/>
+        <ref name="draw-regular-polygon"/>
+        <ref name="draw-path"/>
+        <ref name="draw-circle"/>
+        <ref name="draw-ellipse"/>
+        <ref name="draw-g"/>
+        <ref name="draw-page-thumbnail"/>
+        <ref name="draw-frame"/>
+        <ref name="draw-measure"/>
+        <ref name="draw-caption"/>
+        <ref name="draw-connector"/>
+        <ref name="draw-control"/>
+        <ref name="dr3d-scene"/>
+        <ref name="draw-custom-shape"/>
+    </choice>
+</define>
+<define name="draw-rect">
+    <element name="draw:rect">
+        <ref name="draw-rect-attlist"/>
+        <ref name="common-draw-position-attlist"/>
+        <ref name="common-draw-size-attlist"/>
+        <ref name="common-draw-shape-with-text-and-styles-attlist"/>
+        <ref name="common-draw-caption-id-attlist"/>
+        <optional>
+            <ref name="svg-title"/>
+        </optional>
+        <optional>
+            <ref name="svg-desc"/>
+        </optional>
+        <optional>
+            <ref name="office-event-listeners"/>
+        </optional>
+        <zeroOrMore>
+            <ref name="draw-glue-point"/>
+        </zeroOrMore>
+        <ref name="draw-text"/>
+    </element>
+</define>
+<define name="draw-rect-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:corner-radius">
+            <ref name="nonNegativeLength"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-line">
+    <element name="draw:line">
+        <ref name="draw-line-attlist"/>
+        <ref name="common-draw-shape-with-text-and-styles-attlist"/>
+        <ref name="common-draw-caption-id-attlist"/>
+        <optional>
+            <ref name="svg-title"/>
+        </optional>
+        <optional>
+            <ref name="svg-desc"/>
+        </optional>
+        <optional>
+            <ref name="office-event-listeners"/>
+        </optional>
+        <zeroOrMore>
+            <ref name="draw-glue-point"/>
+        </zeroOrMore>
+        <ref name="draw-text"/>
+    </element>
+</define>
+<define name="draw-line-attlist" combine="interleave">
+    <attribute name="svg:x1">
+        <ref name="coordinate"/>
+    </attribute>
+    <attribute name="svg:y1">
+        <ref name="coordinate"/>
+    </attribute>
+</define>
+<define name="draw-line-attlist" combine="interleave">
+    <attribute name="svg:x2">
+        <ref name="coordinate"/>
+    </attribute>
+    <attribute name="svg:y2">
+        <ref name="coordinate"/>
+    </attribute>
+</define>
+<define name="draw-polyline">
+    <element name="draw:polyline">
+        <ref name="common-draw-points-attlist"/>
+        <ref name="common-draw-position-attlist"/>
+        <ref name="common-draw-size-attlist"/>
+        <ref name="common-draw-viewbox-attlist"/>
+        <ref name="common-draw-shape-with-text-and-styles-attlist"/>
+        <ref name="common-draw-caption-id-attlist"/>
+        <optional>
+            <ref name="svg-title"/>
+        </optional>
+        <optional>
+            <ref name="svg-desc"/>
+        </optional>
+        <optional>
+            <ref name="office-event-listeners"/>
+        </optional>
+        <zeroOrMore>
+            <ref name="draw-glue-point"/>
+        </zeroOrMore>
+        <ref name="draw-text"/>
+    </element>
+</define>
+<define name="common-draw-points-attlist">
+    <attribute name="draw:points">
+        <ref name="points"/>
+    </attribute>
+</define>
+<define name="draw-polygon">
+    <element name="draw:polygon">
+        <ref name="common-draw-points-attlist"/>
+        <ref name="common-draw-position-attlist"/>
+        <ref name="common-draw-size-attlist"/>
+        <ref name="common-draw-viewbox-attlist"/>
+        <ref name="common-draw-shape-with-text-and-styles-attlist"/>
+        <ref name="common-draw-caption-id-attlist"/>
+        <optional>
+            <ref name="svg-title"/>
+        </optional>
+        <optional>
+            <ref name="svg-desc"/>
+        </optional>
+        <optional>
+            <ref name="office-event-listeners"/>
+        </optional>
+        <zeroOrMore>
+            <ref name="draw-glue-point"/>
+        </zeroOrMore>
+        <ref name="draw-text"/>
+    </element>
+</define>
+<define name="draw-regular-polygon">
+    <element name="draw:regular-polygon">
+        <ref name="draw-regular-polygon-attlist"/>
+        <ref name="common-draw-position-attlist"/>
+        <ref name="common-draw-size-attlist"/>
+        <ref name="common-draw-shape-with-text-and-styles-attlist"/>
+        <ref name="common-draw-caption-id-attlist"/>
+        <optional>
+            <ref name="svg-title"/>
+        </optional>
+        <optional>
+            <ref name="svg-desc"/>
+        </optional>
+        <optional>
+            <ref name="office-event-listeners"/>
+        </optional>
+        <zeroOrMore>
+            <ref name="draw-glue-point"/>
+        </zeroOrMore>
+        <ref name="draw-text"/>
+    </element>
+</define>
+<define name="draw-regular-polygon-attlist" combine="interleave">
+    <choice>
+        <attribute name="draw:concave">
+            <value>false</value>
+        </attribute>
+        <group>
+            <attribute name="draw:concave">
+                <value>true</value>
+            </attribute>
+            <ref name="draw-regular-polygon-sharpness-attlist"/>
+        </group>
+    </choice>
+</define>
+<define name="draw-regular-polygon-attlist" combine="interleave">
+    <attribute name="draw:corners">
+        <ref name="positiveInteger"/>
+    </attribute>
+</define>
+<define name="draw-regular-polygon-sharpness-attlist">
+    <attribute name="draw:sharpness">
+        <ref name="percent"/>
+    </attribute>
+</define>
+<define name="draw-path">
+    <element name="draw:path">
+        <ref name="common-draw-path-data-attlist"/>
+        <ref name="common-draw-position-attlist"/>
+        <ref name="common-draw-size-attlist"/>
+        <ref name="common-draw-viewbox-attlist"/>
+        <ref name="common-draw-shape-with-text-and-styles-attlist"/>
+        <ref name="common-draw-caption-id-attlist"/>
+        <optional>
+            <ref name="svg-title"/>
+        </optional>
+        <optional>
+            <ref name="svg-desc"/>
+        </optional>
+        <optional>
+            <ref name="office-event-listeners"/>
+        </optional>
+        <zeroOrMore>
+            <ref name="draw-glue-point"/>
+        </zeroOrMore>
+        <ref name="draw-text"/>
+    </element>
+</define>
+<define name="common-draw-path-data-attlist">
+    <attribute name="svg:d">
+        <ref name="pathData"/>
+    </attribute>
+</define>
+<define name="draw-circle">
+    <element name="draw:circle">
+        <ref name="draw-circle-attlist"/>
+        <ref name="common-draw-circle-ellipse-attlist"/>
+        <ref name="common-draw-position-attlist"/>
+        <ref name="common-draw-size-attlist"/>
+        <ref name="common-draw-shape-with-text-and-styles-attlist"/>
+        <ref name="common-draw-caption-id-attlist"/>
+        <optional>
+            <ref name="svg-title"/>
+        </optional>
+        <optional>
+            <ref name="svg-desc"/>
+        </optional>
+        <optional>
+            <ref name="office-event-listeners"/>
+        </optional>
+        <zeroOrMore>
+            <ref name="draw-glue-point"/>
+        </zeroOrMore>
+        <ref name="draw-text"/>
+    </element>
+</define>
+<define name="common-draw-circle-ellipse-attlist" combine="interleave">
+    <optional>
+        <attribute name="svg:cx">
+            <ref name="coordinate"/>
+        </attribute>
+        <attribute name="svg:cy">
+            <ref name="coordinate"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-circle-attlist" combine="interleave">
+    <optional>
+        <attribute name="svg:r">
+            <ref name="length"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-draw-circle-ellipse-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:kind" a:defaultValue="full">
+            <choice>
+                <value>full</value>
+                <value>section</value>
+                <value>cut</value>
+                <value>arc</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="common-draw-circle-ellipse-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:start-angle">
+            <ref name="double"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-draw-circle-ellipse-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:end-angle">
+            <ref name="double"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-ellipse">
+    <element name="draw:ellipse">
+        <ref name="common-draw-circle-ellipse-attlist"/>
+        <ref name="draw-ellipse-attlist"/>
+        <ref name="common-draw-position-attlist"/>
+        <ref name="common-draw-size-attlist"/>
+        <ref name="common-draw-shape-with-text-and-styles-attlist"/>
+        <ref name="common-draw-caption-id-attlist"/>
+        <optional>
+            <ref name="svg-title"/>
+        </optional>
+        <optional>
+            <ref name="svg-desc"/>
+        </optional>
+        <optional>
+            <ref name="office-event-listeners"/>
+        </optional>
+        <zeroOrMore>
+            <ref name="draw-glue-point"/>
+        </zeroOrMore>
+        <ref name="draw-text"/>
+    </element>
+</define>
+<define name="draw-ellipse-attlist" combine="interleave">
+    <optional>
+        <attribute name="svg:rx">
+            <ref name="length"/>
+        </attribute>
+        <attribute name="svg:ry">
+            <ref name="length"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-connector">
+    <element name="draw:connector">
+        <ref name="draw-connector-attlist"/>
+        <ref name="common-draw-shape-with-text-and-styles-attlist"/>
+        <ref name="common-draw-caption-id-attlist"/>
+        <optional>
+            <ref name="svg-title"/>
+        </optional>
+        <optional>
+            <ref name="svg-desc"/>
+        </optional>
+        <optional>
+            <ref name="office-event-listeners"/>
+        </optional>
+        <zeroOrMore>
+            <ref name="draw-glue-point"/>
+        </zeroOrMore>
+        <ref name="draw-text"/>
+    </element>
+</define>
+<define name="draw-connector-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:type" a:defaultValue="standard">
+            <choice>
+                <value>standard</value>
+                <value>lines</value>
+                <value>line</value>
+                <value>curve</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-connector-attlist" combine="interleave">
+    <optional>
+        <attribute name="svg:x1">
+            <ref name="coordinate"/>
+        </attribute>
+        <attribute name="svg:y1">
+            <ref name="coordinate"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-connector-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:start-shape">
+            <ref name="IDREF"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-connector-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:start-glue-point">
+            <ref name="nonNegativeInteger"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-connector-attlist" combine="interleave">
+    <optional>
+        <attribute name="svg:x2">
+            <ref name="coordinate"/>
+        </attribute>
+        <attribute name="svg:y2">
+            <ref name="coordinate"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-connector-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:end-shape">
+            <ref name="IDREF"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-connector-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:end-glue-point">
+            <ref name="nonNegativeInteger"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-connector-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:line-skew">
+            <list>
+                <ref name="length"/>
+                <optional>
+                    <ref name="length"/>
+                    <optional>
+                        <ref name="length"/>
+                    </optional>
+                </optional>
+            </list>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-caption">
+    <element name="draw:caption">
+        <ref name="draw-caption-attlist"/>
+        <ref name="common-draw-position-attlist"/>
+        <ref name="common-draw-size-attlist"/>
+        <ref name="common-draw-shape-with-text-and-styles-attlist"/>
+        <ref name="common-draw-caption-id-attlist"/>
+        <optional>
+            <ref name="svg-title"/>
+        </optional>
+        <optional>
+            <ref name="svg-desc"/>
+        </optional>
+        <optional>
+            <ref name="office-event-listeners"/>
+        </optional>
+        <zeroOrMore>
+            <ref name="draw-glue-point"/>
+        </zeroOrMore>
+        <ref name="draw-text"/>
+    </element>
+</define>
+<define name="draw-caption-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:caption-point-x">
+            <ref name="coordinate"/>
+        </attribute>
+        <attribute name="draw:caption-point-y">
+            <ref name="coordinate"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-caption-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:corner-radius">
+            <ref name="nonNegativeLength"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-measure">
+    <element name="draw:measure">
+        <ref name="draw-measure-attlist"/>
+        <ref name="common-draw-shape-with-text-and-styles-attlist"/>
+        <ref name="common-draw-caption-id-attlist"/>
+        <optional>
+            <ref name="svg-title"/>
+        </optional>
+        <optional>
+            <ref name="svg-desc"/>
+        </optional>
+        <optional>
+            <ref name="office-event-listeners"/>
+        </optional>
+        <zeroOrMore>
+            <ref name="draw-glue-point"/>
+        </zeroOrMore>
+        <ref name="draw-text"/>
+    </element>
+</define>
+<define name="draw-measure-attlist" combine="interleave">
+    <attribute name="svg:x1">
+        <ref name="coordinate"/>
+    </attribute>
+    <attribute name="svg:y1">
+        <ref name="coordinate"/>
+    </attribute>
+</define>
+<define name="draw-measure-attlist" combine="interleave">
+    <attribute name="svg:x2">
+        <ref name="coordinate"/>
+    </attribute>
+    <attribute name="svg:y2">
+        <ref name="coordinate"/>
+    </attribute>
+</define>
+<define name="draw-control">
+    <element name="draw:control">
+        <ref name="draw-control-attlist"/>
+        <ref name="common-draw-position-attlist"/>
+        <ref name="common-draw-size-attlist"/>
+        <ref name="common-draw-shape-with-text-and-styles-attlist"/>    
+        <ref name="common-draw-caption-id-attlist"/>
+        <optional>
+            <ref name="svg-title"/>
+        </optional>
+        <optional>
+            <ref name="svg-desc"/>
+        </optional>
+        <zeroOrMore>
+            <ref name="draw-glue-point"/>
+        </zeroOrMore>
+    </element>
+</define>
+<define name="draw-control-attlist" combine="interleave">
+    <attribute name="draw:control">
+        <ref name="IDREF"/>
+    </attribute>
+</define>
+<define name="draw-page-thumbnail">
+    <element name="draw:page-thumbnail">
+        <ref name="draw-page-thumbnail-attlist"/>
+        <ref name="common-draw-position-attlist"/>
+        <ref name="common-draw-size-attlist"/>
+        <ref name="presentation-shape-attlist"/>
+        <ref name="common-draw-shape-with-styles-attlist"/>
+        <ref name="common-draw-caption-id-attlist"/>
+        <optional>
+            <ref name="svg-title"/>
+        </optional>
+        <optional>
+            <ref name="svg-desc"/>
+        </optional>
+    </element>
+</define>
+<define name="draw-page-thumbnail-attlist">
+    <optional>
+        <attribute name="draw:page-number">
+            <ref name="positiveInteger"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-g">
+    <element name="draw:g">
+        <ref name="draw-g-attlist"/>
+        <ref name="common-draw-z-index-attlist"/>
+        <ref name="common-draw-name-attlist"/>
+        <ref name="common-draw-id-attlist"/>
+        <ref name="common-draw-style-name-attlist"/>
+        <ref name="common-text-spreadsheet-shape-attlist"/>
+        <ref name="common-draw-caption-id-attlist"/>
+        <optional>
+            <ref name="svg-title"/>
+        </optional>
+        <optional>
+            <ref name="svg-desc"/>
+        </optional>
+        <optional>
+            <ref name="office-event-listeners"/>
+        </optional>
+        <zeroOrMore>
+            <ref name="draw-glue-point"/>
+        </zeroOrMore>
+        <zeroOrMore>
+            <ref name="shape"/>
+        </zeroOrMore>
+    </element>
+</define>
+<define name="draw-g-attlist" combine="interleave">
+    <optional>
+        <attribute name="svg:y">
+            <ref name="coordinate"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-draw-name-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:name">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-draw-caption-id-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:caption-id">
+            <ref name="IDREF"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-draw-position-attlist">
+    <optional>
+        <attribute name="svg:x">
+            <ref name="coordinate"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="svg:y">
+            <ref name="coordinate"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-draw-size-attlist">
+    <optional>
+        <attribute name="svg:width">
+            <ref name="length"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="svg:height">
+            <ref name="length"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-draw-transform-attlist">
+    <optional>
+        <attribute name="draw:transform">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-draw-viewbox-attlist">
+    <attribute name="svg:viewBox">
+        <list>
+            <ref name="integer"/>
+            <ref name="integer"/>
+            <ref name="integer"/>
+            <ref name="integer"/>
+        </list>
+    </attribute>
+</define>
+<define name="common-draw-style-name-attlist">
+    <choice>
+        <group>
+            <optional>
+                <attribute name="draw:style-name">
+                    <ref name="styleNameRef"/>
+                </attribute>
+            </optional>
+            <optional>
+                <attribute name="draw:class-names">
+                    <ref name="styleNameRefs"/>
+                </attribute>
+            </optional>
+        </group>
+        <group>
+            <optional>
+                <attribute name="presentation:style-name">
+                    <ref name="styleNameRef"/>
+                </attribute>
+            </optional>
+            <optional>
+                <attribute name="presentation:class-names">
+                    <ref name="styleNameRefs"/>
+                </attribute>
+            </optional>
+        </group>
+    </choice>
+</define>
+<define name="common-draw-text-style-name-attlist">
+    <optional>
+        <attribute name="draw:text-style-name">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-draw-layer-name-attlist">
+    <optional>
+        <attribute name="draw:layer">
+            <data type="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-draw-id-attlist">
+    <optional>
+        <attribute name="draw:id">
+            <ref name="ID"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-draw-z-index-attlist">
+    <optional>
+        <attribute name="draw:z-index">
+            <ref name="nonNegativeInteger"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-text-spreadsheet-shape-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:end-cell-address">
+            <ref name="cellAddress"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="table:end-x">
+            <ref name="coordinate"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="table:end-y">
+            <ref name="coordinate"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-text-spreadsheet-shape-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:table-background">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-text-spreadsheet-shape-attlist" combine="interleave">
+    <ref name="common-text-anchor-attlist"/>
+</define>
+
+<define name="common-text-anchor-attlist" combine="interleave">
+    <optional>
+        <attribute name="text:anchor-type">
+            <choice>
+                <value>page</value>
+                <value>frame</value>
+                <value>paragraph</value>
+                <value>char</value>
+                <value>as-char</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="common-text-anchor-attlist" combine="interleave">
+    <optional>
+        <attribute name="text:anchor-page-number">
+            <ref name="positiveInteger"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-text">
+    <zeroOrMore>
+        <choice>
+            <ref name="text-p"/>
+            <ref name="text-list"/>
+        </choice>
+    </zeroOrMore>
+</define>
+<define name="common-draw-shape-with-styles-attlist">
+    <ref name="common-draw-z-index-attlist"/>
+    <ref name="common-draw-id-attlist"/>
+    <ref name="common-draw-layer-name-attlist"/>
+    <ref name="common-draw-style-name-attlist"/>
+    <ref name="common-draw-transform-attlist"/>
+    <ref name="common-draw-name-attlist"/>
+    <ref name="common-text-spreadsheet-shape-attlist"/>
+</define>
+<define name="common-draw-shape-with-text-and-styles-attlist">
+    <ref name="common-draw-shape-with-styles-attlist"/>
+    <ref name="common-draw-text-style-name-attlist"/>
+</define>
+<define name="draw-glue-point">
+    <element name="draw:glue-point">
+        <ref name="draw-glue-point-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="draw-glue-point-attlist" combine="interleave">
+    <attribute name="draw:id">
+        <ref name="nonNegativeInteger"/>
+    </attribute>
+</define>
+<define name="draw-glue-point-attlist" combine="interleave">
+    <attribute name="svg:x">
+        <choice>
+            <ref name="distance"/> 
+            <ref name="percent"/>
+        </choice>
+    </attribute>
+    <attribute name="svg:y">
+        <choice>
+            <ref name="distance"/> 
+            <ref name="percent"/>
+        </choice>
+    </attribute>
+</define>
+<define name="draw-glue-point-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:align">
+            <choice>
+                <value>top-left</value>
+                <value>top</value>
+                <value>top-right</value>
+                <value>left</value>
+                <value>center</value>
+                <value>right</value>
+                <value>bottom-left</value>
+                <value>bottom-right</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-glue-points-attlist" combine="interleave">
+    <attribute name="draw:escape-direction">
+        <choice>
+            <value>auto</value>
+            <value>left</value>
+            <value>right</value>
+            <value>up</value>
+            <value>down</value>
+            <value>horizontal</value>
+            <value>vertical</value>
+        </choice>
+    </attribute>
+</define>
+<define name="svg-title">
+    <element name="svg:title">
+        <text/>
+    </element>
+</define>
+<define name="svg-desc">
+    <element name="svg:desc">
+        <text/>
+    </element>
+</define>
+<define name="draw-frame">
+    <element name="draw:frame">
+        <ref name="common-draw-shape-with-text-and-styles-attlist"/>
+        <ref name="common-draw-position-attlist"/>
+        <ref name="common-draw-rel-size-attlist"/>
+        <ref name="common-draw-caption-id-attlist"/>
+        <ref name="presentation-shape-attlist"/>
+        <ref name="draw-frame-attlist"/>
+        <zeroOrMore>
+            <choice>
+                <ref name="draw-text-box"/>
+                <ref name="draw-image"/>
+                <ref name="draw-object"/>
+                <ref name="draw-object-ole"/>
+                <ref name="draw-applet"/>
+                <ref name="draw-floating-frame"/>
+                <ref name="draw-plugin"/>
+            </choice>
+        </zeroOrMore>
+        <optional>
+            <ref name="office-event-listeners"/>
+        </optional>
+        <zeroOrMore>
+            <ref name="draw-glue-point"/>
+        </zeroOrMore>
+        <optional>
+            <ref name="draw-image-map"/>
+        </optional>
+        <optional>
+            <ref name="svg-title"/>
+        </optional>
+        <optional>
+            <ref name="svg-desc"/>
+        </optional>
+        <optional>
+            <choice>
+                <ref name="draw-contour-polygon"/>
+                <ref name="draw-contour-path"/>
+            </choice>
+        </optional>
+    </element>
+</define>
+<define name="common-draw-rel-size-attlist">
+    <ref name="common-draw-size-attlist"/>
+    <optional>
+        <attribute name="style:rel-width">
+            <choice>
+                <ref name="percent"/>
+                <value>scale</value>
+                <value>scale-min</value>
+            </choice>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="style:rel-height">
+            <choice>
+                <ref name="percent"/>
+                <value>scale</value>
+                <value>scale-min</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-frame-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:copy-of">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-text-box">
+    <element name="draw:text-box">
+        <ref name="draw-text-box-attlist"/>
+        <zeroOrMore>
+            <ref name="text-content"/>
+        </zeroOrMore>
+    </element>
+</define>
+<define name="draw-text-box-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:chain-next-name">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-text-box-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:corner-radius">
+            <ref name="nonNegativeLength"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-text-box-attlist" combine="interleave">
+    <optional>
+        <attribute name="fo:min-height">
+            <choice>
+                <ref name="length"/>
+                <ref name="percent"/>
+            </choice>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="fo:min-width">
+            <choice>
+                <ref name="length"/>
+                <ref name="percent"/>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-text-box-attlist" combine="interleave">
+    <optional>
+        <attribute name="fo:max-height">
+            <choice>
+                <ref name="length"/>
+                <ref name="percent"/>
+            </choice>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="fo:max-width">
+            <choice>
+                <ref name="length"/>
+                <ref name="percent"/>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-text-box-attlist" combine="interleave">
+    <optional>
+        <ref name="text-id"/>
+    </optional>
+</define>
+<define name="draw-image">
+    <element name="draw:image">
+        <ref name="draw-image-attlist"/>
+        <choice>
+            <ref name="common-draw-data-attlist"/>
+            <ref name="office-binary-data"/>
+        </choice>
+        <ref name="draw-text"/>
+    </element>
+</define>
+<define name="common-draw-data-attlist" combine="interleave">
+    <group>
+        <attribute name="xlink:href">
+            <ref name="anyURI"/>
+        </attribute>
+        <optional>
+            <attribute name="xlink:type" a:defaultValue="simple">
+                <choice>
+                    <value>simple</value>
+                </choice>
+            </attribute>
+        </optional>
+        <optional>
+            <attribute name="xlink:show" a:defaultValue="embed">
+                <choice>
+                    <value>embed</value>
+                </choice>
+            </attribute>
+        </optional>
+        <optional>
+            <attribute name="xlink:actuate" a:defaultValue="onLoad">
+                <choice>
+                    <value>onLoad</value>
+                </choice>
+            </attribute>
+        </optional>
+    </group>
+</define>
+
+<define name="office-binary-data">
+    <element name="office:binary-data">
+        <ref name="base64Binary"/>
+    </element>
+</define>
+<define name="draw-image-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:filter-name">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-object">
+    <element name="draw:object">
+        <ref name="draw-object-attlist"/>
+        <choice>
+            <ref name="common-draw-data-attlist"/>
+            <ref name="office-document"/>
+            <ref name="math-math"/>
+        </choice>
+    </element>
+</define>
+
+<define name="draw-object-ole">
+    <element name="draw:object-ole">
+        <ref name="draw-object-ole-attlist"/>
+        <choice>
+            <ref name="common-draw-data-attlist"/>
+            <ref name="office-binary-data"/>
+        </choice>
+    </element>
+</define>
+<define name="draw-object-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:notify-on-update-of-ranges">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-object-ole-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:class-id"/>
+    </optional>
+</define>
+<define name="draw-applet">
+    <element name="draw:applet">
+        <ref name="draw-applet-attlist"/>
+        <optional>
+            <ref name="common-draw-data-attlist"/>
+        </optional>
+        <zeroOrMore>
+            <ref name="draw-param"/>
+        </zeroOrMore>
+    </element>
+</define>
+<define name="draw-applet-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:code"/>
+    </optional>
+</define>
+<define name="draw-applet-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:object"/>
+    </optional>
+</define>
+<define name="draw-applet-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:archive"/>
+    </optional>
+</define>
+<define name="draw-applet-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:may-script" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-plugin">
+    <element name="draw:plugin">
+        <ref name="draw-plugin-attlist"/>
+        <ref name="common-draw-data-attlist"/>
+        <zeroOrMore>
+            <ref name="draw-param"/>
+        </zeroOrMore>
+    </element>
+</define>
+<define name="draw-plugin-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:mime-type"/>
+    </optional>
+</define>
+<define name="draw-param">
+    <element name="draw:param">
+        <ref name="draw-param-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="draw-param-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:name"/>
+    </optional>
+</define>
+<define name="draw-param-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:value"/>
+    </optional>
+</define>
+<define name="draw-floating-frame">
+    <element name="draw:floating-frame">
+        <ref name="draw-floating-frame-attlist"/>
+        <ref name="common-draw-data-attlist"/>
+    </element>
+</define>
+<define name="draw-floating-frame-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:frame-name">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-contour-polygon">
+    <element name="draw:contour-polygon">
+        <ref name="common-contour-attlist"/>
+        <ref name="common-draw-size-attlist"/>
+        <ref name="common-draw-viewbox-attlist"/>
+        <ref name="common-draw-points-attlist"/>
+        <empty/>
+    </element>
+</define>
+
+<define name="draw-contour-path">
+    <element name="draw:contour-path">
+        <ref name="common-contour-attlist"/>
+        <ref name="common-draw-size-attlist"/>
+        <ref name="common-draw-viewbox-attlist"/>
+        <ref name="common-draw-path-data-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="common-contour-attlist" combine="interleave">
+    <attribute name="draw:recreate-on-edit">
+        <ref name="boolean"/>
+    </attribute>
+</define>
+<define name="draw-a">
+    <element name="draw:a">
+        <ref name="draw-a-attlist"/>
+        <ref name="draw-frame"/>
+    </element>
+</define>
+<define name="draw-a-attlist" combine="interleave">
+    <attribute name="xlink:href">
+        <ref name="anyURI"/>
+    </attribute>
+    <optional>
+        <attribute name="xlink:type" a:defaultValue="simple">
+            <value>simple</value>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="xlink:actuate" a:defaultValue="onRequest">
+            <choice>
+                <value>onRequest</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-a-attlist" combine="interleave">
+    <optional>
+        <attribute name="office:target-frame-name">
+            <ref name="targetFrameName"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="xlink:show">
+            <choice>
+                <value>new</value>
+                <value>replace</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-a-attlist" combine="interleave">
+    <optional>
+        <attribute name="office:name">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-a-attlist" combine="interleave">
+    <optional>
+        <attribute name="office:title">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-a-attlist" combine="interleave">
+    <optional>
+        <attribute name="office:server-map" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-image-map">
+    <element name="draw:image-map">
+        <zeroOrMore>
+            <choice>
+                <ref name="draw-area-rectangle"/>
+                <ref name="draw-area-circle"/>
+                <ref name="draw-area-polygon"/>
+            </choice>
+        </zeroOrMore>
+    </element>
+</define>
+<define name="draw-area-rectangle">
+    <element name="draw:area-rectangle">
+        <ref name="common-draw-area-attlist"/>
+        <attribute name="svg:x">
+            <ref name="coordinate"/>
+        </attribute>
+        <attribute name="svg:y">
+            <ref name="coordinate"/>
+        </attribute>
+        <attribute name="svg:width">
+            <ref name="length"/>
+        </attribute>
+        <attribute name="svg:height">
+            <ref name="length"/>
+        </attribute>
+        <optional>
+            <ref name="svg-title"/>
+        </optional>
+        <optional>
+            <ref name="svg-desc"/>
+        </optional>
+        <optional>
+            <ref name="office-event-listeners"/>
+        </optional>
+    </element>
+</define>
+<define name="draw-area-circle">
+    <element name="draw:area-circle">
+        <ref name="common-draw-area-attlist"/>
+        <attribute name="svg:cx">
+            <ref name="coordinate"/>
+        </attribute>
+        <attribute name="svg:cy">
+            <ref name="coordinate"/>
+        </attribute>
+        <attribute name="svg:r">
+            <ref name="length"/>
+        </attribute>
+        <optional>
+            <ref name="svg-title"/>
+        </optional>
+        <optional>
+            <ref name="svg-desc"/>
+        </optional>
+        <optional>
+            <ref name="office-event-listeners"/>
+        </optional>
+    </element>
+</define>
+<define name="draw-area-polygon">
+    <element name="draw:area-polygon">
+        <ref name="common-draw-area-attlist"/>
+        <attribute name="svg:x">
+            <ref name="coordinate"/>
+        </attribute>
+        <attribute name="svg:y">
+            <ref name="coordinate"/>
+        </attribute>
+        <attribute name="svg:width">
+            <ref name="length"/>
+        </attribute>
+        <attribute name="svg:height">
+            <ref name="length"/>
+        </attribute>
+        <ref name="common-draw-viewbox-attlist"/>
+        <ref name="common-draw-points-attlist"/>
+        <optional>
+            <ref name="svg-title"/>
+        </optional>
+        <optional>
+            <ref name="svg-desc"/>
+        </optional>
+        <optional>
+            <ref name="office-event-listeners"/>
+        </optional>
+    </element>
+</define>
+<define name="common-draw-area-attlist" combine="interleave">
+    <optional>
+        <attribute name="xlink:href">
+            <ref name="anyURI"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="xlink:type" a:defaultValue="simple">
+            <choice>
+                <value>simple</value>
+            </choice>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="office:target-frame-name">
+            <ref name="targetFrameName"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="xlink:show">
+            <choice>
+                <value>new</value>
+                <value>replace</value>
+            </choice>
+            </attribute>
+    </optional>
+</define>
+<define name="common-draw-area-attlist" combine="interleave">
+    <optional>
+        <attribute name="office:name">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-draw-area-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:nohref">
+            <choice>
+                <value>nohref</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="dr3d-scene">
+    <element name="dr3d:scene">
+        <ref name="dr3d-scene-attlist"/>
+        <ref name="common-draw-position-attlist"/>
+        <ref name="common-draw-size-attlist"/>
+        <ref name="common-draw-style-name-attlist"/>
+        <ref name="common-draw-z-index-attlist"/>
+        <ref name="common-draw-id-attlist"/>
+        <ref name="common-draw-layer-name-attlist"/>
+        <ref name="common-text-spreadsheet-shape-attlist"/>
+        <ref name="common-dr3d-transform-attlist"/>
+        <ref name="common-draw-caption-id-attlist"/>
+        <optional>
+            <ref name="svg-title"/>
+        </optional>
+        <optional>
+            <ref name="svg-desc"/>
+        </optional>
+        <zeroOrMore>
+            <ref name="dr3d-light"/>
+        </zeroOrMore>
+        <zeroOrMore>
+            <ref name="shapes3d"/>
+        </zeroOrMore>
+    </element>
+</define>
+
+<define name="shapes3d">
+    <choice>
+        <ref name="dr3d-scene"/>
+        <ref name="dr3d-extrude"/>
+        <ref name="dr3d-sphere"/>
+        <ref name="dr3d-rotate"/>
+        <ref name="dr3d-cube"/>
+    </choice>
+</define>
+<define name="dr3d-scene-attlist" combine="interleave">
+    <optional>
+        <attribute name="dr3d:vrp">
+            <ref name="vector3D"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="dr3d:vpn">
+            <ref name="vector3D"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="dr3d:vup">
+            <ref name="vector3D"/>
+        </attribute>
+    </optional>
+</define>
+<define name="dr3d-scene-attlist" combine="interleave">
+    <optional>
+        <attribute name="dr3d:projection">
+            <choice>
+                <value>parallel</value>
+                <value>perspective</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="dr3d-scene-attlist" combine="interleave">
+    <optional>
+        <attribute name="dr3d:distance">
+            <ref name="length"/>
+        </attribute>
+    </optional>
+</define>
+<define name="dr3d-scene-attlist" combine="interleave">
+    <optional>
+        <attribute name="dr3d:focal-length">
+            <ref name="length"/>
+        </attribute>
+    </optional>
+</define>
+<define name="dr3d-scene-attlist" combine="interleave">
+    <optional>
+        <attribute name="dr3d:shadow-slant">
+            <ref name="nonNegativeInteger"/>
+        </attribute>
+    </optional>
+</define>
+<define name="dr3d-scene-attlist" combine="interleave">
+    <optional>
+        <attribute name="dr3d:shade-mode">
+            <choice>
+                <value>flat</value>
+                <value>phong</value>
+                <value>gouraud</value>
+                <value>draft</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="dr3d-scene-attlist" combine="interleave">
+    <optional>
+        <attribute name="dr3d:ambient-color">
+            <ref name="color"/>
+        </attribute>
+    </optional>
+</define>
+<define name="dr3d-scene-attlist" combine="interleave">
+    <optional>
+        <attribute name="dr3d:lighting-mode">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-dr3d-transform-attlist">
+    <optional>
+        <attribute name="dr3d:transform"/>
+    </optional>
+</define>
+<define name="dr3d-light">
+    <element name="dr3d:light">
+        <ref name="dr3d-light-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="dr3d-light-attlist" combine="interleave">
+    <optional>
+        <attribute name="dr3d:diffuse-color">
+            <ref name="color"/>
+        </attribute>
+    </optional>
+</define>
+<define name="dr3d-light-attlist" combine="interleave">
+    <attribute name="dr3d:direction">
+        <ref name="vector3D"/>
+    </attribute>
+</define>
+<define name="dr3d-light-attlist" combine="interleave">
+    <optional>
+        <attribute name="dr3d:enabled">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="dr3d-light-attlist" combine="interleave">
+    <optional>
+        <attribute name="dr3d:specular">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="dr3d-cube">
+    <element name="dr3d:cube">
+        <ref name="dr3d-cube-attlist"/>
+        <ref name="common-draw-z-index-attlist"/>
+        <ref name="common-draw-id-attlist"/>
+        <ref name="common-draw-layer-name-attlist"/>
+        <ref name="common-draw-style-name-attlist"/>
+        <ref name="common-dr3d-transform-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="dr3d-cube-attlist" combine="interleave">
+    <optional>
+        <attribute name="dr3d:min-edge">
+            <ref name="vector3D"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="dr3d:max-edge">
+            <ref name="vector3D"/>
+        </attribute>
+    </optional>
+</define>
+<define name="dr3d-sphere">
+    <element name="dr3d:sphere">
+        <ref name="dr3d-sphere-attlist"/>
+        <ref name="common-draw-z-index-attlist"/>
+        <ref name="common-draw-id-attlist"/>
+        <ref name="common-draw-layer-name-attlist"/>
+        <ref name="common-draw-style-name-attlist"/>
+        <ref name="common-dr3d-transform-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="dr3d-sphere-attlist" combine="interleave">
+    <optional>
+        <attribute name="dr3d:center">
+            <ref name="vector3D"/>
+        </attribute>
+    </optional>
+</define>
+<define name="dr3d-sphere-attlist" combine="interleave">
+    <optional>
+        <attribute name="dr3d:size">
+            <ref name="vector3D"/>
+        </attribute>
+    </optional>
+</define>
+<define name="dr3d-extrude">
+    <element name="dr3d:extrude">
+        <ref name="common-draw-path-data-attlist"/>
+        <ref name="common-draw-viewbox-attlist"/>
+        <ref name="common-draw-id-attlist"/>
+        <ref name="common-draw-z-index-attlist"/>
+        <ref name="common-draw-layer-name-attlist"/>
+        <ref name="common-draw-style-name-attlist"/>
+        <ref name="common-dr3d-transform-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="dr3d-rotate">
+    <element name="dr3d:rotate">
+        <ref name="common-draw-viewbox-attlist"/>
+        <ref name="common-draw-path-data-attlist"/>
+        <ref name="common-draw-z-index-attlist"/>
+        <ref name="common-draw-id-attlist"/>
+        <ref name="common-draw-layer-name-attlist"/>
+        <ref name="common-draw-style-name-attlist"/>
+        <ref name="common-dr3d-transform-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="draw-custom-shape">
+    <element name="draw:custom-shape">
+        <ref name="draw-custom-shape-attlist"/>
+        <ref name="common-draw-position-attlist"/>
+        <ref name="common-draw-size-attlist"/>
+        <ref name="common-draw-shape-with-text-and-styles-attlist"/>
+        <ref name="common-draw-caption-id-attlist"/>
+        <optional>
+            <ref name="svg-title"/>
+        </optional>
+        <optional>
+            <ref name="svg-desc"/>
+        </optional>
+        <optional>
+            <ref name="office-event-listeners"/>
+        </optional>
+        <zeroOrMore>
+            <ref name="draw-glue-point"/>
+        </zeroOrMore>
+        <ref name="draw-text"/>
+        <optional>
+            <ref name="draw-enhanced-geometry"/>
+        </optional>
+    </element>
+</define>
+<define name="draw-custom-shape-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:engine">
+            <ref name="namespacedToken"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-custom-shape-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:data">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-enhanced-geometry">
+    <element name="draw:enhanced-geometry">
+        <ref name="draw-enhanced-geometry-attlist"/>
+        <zeroOrMore>
+            <ref name="draw-equation"/>
+        </zeroOrMore>
+        <zeroOrMore>
+            <ref name="draw-handle"/>
+        </zeroOrMore>
+    </element>
+</define>
+<define name="draw-enhanced-geometry-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:type" a:defaultValue="non-primitive">
+            <ref name="custom-shape-type"/>
+        </attribute>
+    </optional>
+</define>
+
+<define name="custom-shape-type">
+    <choice>
+        <value>non-primitive</value>
+        <ref name="string"/>
+    </choice>
+</define>
+<define name="draw-enhanced-geometry-attlist" combine="interleave">
+    <optional>
+        <attribute name="svg:viewBox">
+            <list>
+                <ref name="integer"/>
+                <ref name="integer"/>
+                <ref name="integer"/>
+                <ref name="integer"/>
+            </list>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-enhanced-geometry-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:mirror-vertical" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="draw:mirror-horizontal" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-enhanced-geometry-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:text-rotate-angle" a:defaultValue="0">
+            <ref name="double"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-enhanced-geometry-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:extrusion-allowed" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-enhanced-geometry-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:text-path-allowed" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-enhanced-geometry-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:concentric-gradient-fill-allowed"
+                    a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-enhanced-geometry-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:extrusion" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-enhanced-geometry-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:extrusion-brightness" a:defaultValue="33%">
+            <ref name="percent"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-enhanced-geometry-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:extrusion-depth" a:defaultValue="36pt 0">
+            <list>
+                <ref name="length"/>
+                <ref name="double"/>
+            </list>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-enhanced-geometry-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:extrusion-diffusion" a:defaultValue="0%">
+            <ref name="percent"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-enhanced-geometry-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:extrusion-number-of-line-segments"
+                   a:defaultValue="30">
+            <ref name="integer"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-enhanced-geometry-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:extrusion-light-face" a:defaultValue="true">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-enhanced-geometry-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:extrusion-first-light-harsh"
+                   a:defaultValue="true">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-enhanced-geometry-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:extrusion-second-light-harsh"
+                   a:defaultValue="true">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-enhanced-geometry-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:extrusion-first-light-level"
+                   a:defaultValue="66%">
+            <ref name="percent"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-enhanced-geometry-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:extrusion-second-light-level"
+                   a:defaultValue="66%">
+            <ref name="percent"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-enhanced-geometry-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:extrusion-first-light-direction"
+                   a:defaultValue="(5 0 1)">
+            <ref name="vector3D"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-enhanced-geometry-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:extrusion-second-light-direction"
+                   a:defaultValue="(-5 0 1)">
+            <ref name="vector3D"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-enhanced-geometry-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:extrusion-metal" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-enhanced-geometry-attlist" combine="interleave">
+    <optional>
+        <attribute name="dr3d:shade-mode" a:defaultValue="flat">
+            <choice>
+                <value>flat</value>
+                <value>phong</value>
+                <value>gouraud</value>
+                <value>draft</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-enhanced-geometry-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:extrusion-rotation-angle" a:defaultValue="0 0">
+            <list>
+                <ref name="double"/>
+                <ref name="double"/>
+            </list>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-enhanced-geometry-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:extrusion-rotation-center">
+            <ref name="vector3D"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-enhanced-geometry-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:extrusion-shininess" a:defaultValue="50%">
+            <ref name="percent"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-enhanced-geometry-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:extrusion-skew" a:defaultValue="50 45">
+            <list>
+                <ref name="double"/>
+                <ref name="double"/>
+            </list>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-enhanced-geometry-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:extrusion-specularity" a:defaultValue="0%">
+            <ref name="percent"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-enhanced-geometry-attlist" combine="interleave">
+    <optional>
+        <attribute name="dr3d:projection" a:defaultValue="parallel">
+            <choice>
+                <value>parallel</value>
+                <value>perspective</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-enhanced-geometry-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:extrusion-viewpoint" 
+                   a:defaultValue="3.5cm -3.5cm 25cm">
+            <ref name="point3D"/>
+        </attribute>
+    </optional>
+</define>
+
+<define name="point3D">
+    <data type="string"/>
+</define>
+<define name="draw-enhanced-geometry-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:extrusion-origin" a:defaultValue="0.5 -0.5">
+            <list>
+                <ref name="double"/>
+                <ref name="double"/>
+            </list>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-enhanced-geometry-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:extrusion-color" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-enhanced-geometry-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:enhanced-path">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-enhanced-geometry-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:path-stretchpoint-x" a:defaultValue="0">
+            <ref name="double"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="draw:path-stretchpoint-y" a:defaultValue="0">
+            <ref name="double"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-enhanced-geometry-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:text-areas">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-enhanced-geometry-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:glue-points">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-enhanced-geometry-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:glue-point-type" a:defaultValue="none">
+            <choice>
+                <value>none</value>
+                <value>segments</value>
+                <value>rectangle</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-enhanced-geometry-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:glue-point-leaving-directions"/>
+    </optional>
+</define>
+<define name="draw-enhanced-geometry-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:text-path" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-enhanced-geometry-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:text-path-mode" a:defaultValue="normal">
+            <choice>
+                <value>normal</value>
+                <value>path</value>
+                <value>shape</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-enhanced-geometry-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:text-path-scale" a:defaultValue="path">
+            <choice>
+                <value>path</value>
+                <value>shape</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-enhanced-geometry-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:text-path-same-letter-heights"
+                   a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-enhanced-geometry-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:modifiers">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-equation">
+    <element name="draw:equation">
+        <ref name="draw-equation-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="draw-equation-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:name">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-equation-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:formula">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-handle">
+    <element name="draw:handle">
+        <ref name="draw-handle-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="draw-handle-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:handle-mirror-vertical" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-handle-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:handle-mirror-horizontal" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-handle-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:handle-switched" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-handle-attlist" combine="interleave">
+    <attribute name="draw:handle-position">
+        <ref name="string"/>
+    </attribute>
+</define>
+<define name="draw-handle-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:handle-range-x-minimum">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-handle-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:handle-range-x-maximum">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-handle-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:handle-range-y-minimum">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-handle-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:handle-range-y-maximum">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-handle-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:handle-polar">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-handle-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:handle-radius-range-minimum">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-handle-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:handle-radius-range-maximum">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="presentation-shape-attlist" combine="interleave">
+    <optional>
+        <attribute name="presentation:class">
+            <ref name="presentation-classes"/>
+        </attribute>
+    </optional>
+</define>
+<define name="presentation-classes">
+    <choice>
+        <value>title</value>
+        <value>outline</value>
+        <value>subtitle</value>
+        <value>text</value>
+        <value>graphic</value>
+        <value>object</value>
+        <value>chart</value>
+        <value>table</value>
+        <value>orgchart</value>
+        <value>page</value>
+        <value>notes</value>
+        <value>handout</value>
+        <value>header</value>
+        <value>footer</value>
+        <value>date-time</value>
+        <value>page-number</value>
+    </choice>
+</define>
+<define name="presentation-shape-attlist" combine="interleave">
+    <optional>
+        <attribute name="presentation:placeholder">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="presentation-shape-attlist" combine="interleave">
+    <optional>
+        <attribute name="presentation:user-transformed">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="presentation-animations">
+    <element name="presentation:animations">
+        <zeroOrMore>
+            <choice>
+                <ref name="presentation-animation-elements"/>
+                <ref name="presentation-animation-group"/>
+            </choice>
+        </zeroOrMore>
+    </element>
+</define>
+<define name="presentation-animation-elements">
+    <choice>
+        <ref name="presentation-show-shape"/>
+        <ref name="presentation-show-text"/>
+        <ref name="presentation-hide-shape"/>
+        <ref name="presentation-hide-text"/>
+        <ref name="presentation-dim"/>
+        <ref name="presentation-play"/>
+    </choice>
+</define>
+<define name="presentation-sound">
+    <element name="presentation:sound">
+        <ref name="presentation-sound-attlist"/>
+        <attribute name="xlink:href">
+            <ref name="anyURI"/>
+        </attribute>
+        <optional>
+            <attribute name="xlink:type" a:defaultValue="simple">
+                <choice>
+                    <value>simple</value>
+                </choice>
+            </attribute>
+        </optional>
+        <optional>
+            <attribute name="xlink:actuate" a:defaultValue="onRequest">
+                <choice>
+                    <value>onRequest</value>
+                </choice>
+            </attribute>
+        </optional>
+        <optional>
+            <attribute name="xlink:show">
+                <choice>
+                    <value>new</value>
+                    <value>replace</value>
+                </choice>
+            </attribute>
+        </optional>
+        <empty/>
+    </element>
+</define>
+<define name="presentation-sound-attlist" combine="interleave">
+    <optional>
+        <attribute name="presentation:play-full">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="presentation-show-shape">
+    <element name="presentation:show-shape">
+        <ref name="common-presentation-effect-attlist"/>
+        <optional>
+            <ref name="presentation-sound"/>
+        </optional>
+    </element>
+</define>
+<define name="common-presentation-effect-attlist" combine="interleave">
+    <attribute name="draw:shape-id">
+        <ref name="IDREF"/>
+    </attribute>
+</define>
+<define name="common-presentation-effect-attlist" combine="interleave">
+    <optional>
+        <attribute name="presentation:effect" a:defaultValue="none">
+            <ref name="presentationEffects"/>
+        </attribute>
+    </optional>
+</define>
+<define name="presentationEffects">
+    <choice>
+        <value>none</value>
+        <value>fade</value>
+        <value>move</value>
+        <value>stripes</value>
+        <value>open</value>
+        <value>close</value>
+        <value>dissolve</value>
+        <value>wavyline</value>
+        <value>random</value>
+        <value>lines</value>
+        <value>laser</value>
+        <value>appear</value>
+        <value>hide</value>
+        <value>move-short</value>
+        <value>checkerboard</value>
+        <value>rotate</value>
+        <value>stretch</value>
+    </choice>
+</define>
+<define name="common-presentation-effect-attlist" combine="interleave">
+    <optional>
+        <attribute name="presentation:direction" a:defaultValue="none">
+            <ref name="presentationEffectDirections"/>
+        </attribute>
+    </optional>
+</define>
+<define name="presentationEffectDirections">
+    <choice>
+        <value>none</value>
+        <value>from-left</value>
+        <value>from-top</value>
+        <value>from-right</value>
+        <value>from-bottom</value>
+        <value>from-center</value>
+        <value>from-upper-left</value>
+        <value>from-upper-right</value>
+        <value>from-lower-left</value>
+        <value>from-lower-right</value>
+        <value>to-left</value>
+        <value>to-top</value>
+        <value>to-right</value>
+        <value>to-bottom</value>
+        <value>to-upper-left</value>
+        <value>to-upper-right</value>
+        <value>to-lower-right</value>
+        <value>to-lower-left</value>
+        <value>path</value>
+        <value>spiral-inward-left</value>
+        <value>spiral-inward-right</value>
+        <value>spiral-outward-left</value>
+        <value>spiral-outward-right</value>
+        <value>vertical</value>
+        <value>horizontal</value>
+        <value>to-center</value>
+        <value>clockwise</value>
+        <value>counter-clockwise</value>
+    </choice>
+</define>
+<define name="common-presentation-effect-attlist" combine="interleave">
+    <optional>
+        <attribute name="presentation:speed" a:defaultValue="medium">
+            <ref name="presentationSpeeds"/>
+        </attribute>
+    </optional>
+</define>
+<define name="presentationSpeeds">
+    <choice>
+        <value>slow</value>
+        <value>medium</value>
+        <value>fast</value>
+    </choice>
+</define>
+<define name="common-presentation-effect-attlist" combine="interleave">
+    <optional>
+        <attribute name="presentation:delay">
+            <ref name="duration"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-presentation-effect-attlist" combine="interleave">
+    <optional>
+        <attribute name="presentation:start-scale" a:defaultValue="100%">
+            <ref name="percent"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-presentation-effect-attlist" combine="interleave">
+    <optional>
+        <attribute name="presentation:path-id"/>
+    </optional>
+</define>
+<define name="presentation-show-text">
+    <element name="presentation:show-text">
+        <ref name="common-presentation-effect-attlist"/>
+        <optional>
+            <ref name="presentation-sound"/>
+        </optional>
+    </element>
+</define>
+<define name="presentation-hide-shape">
+    <element name="presentation:hide-shape">
+        <ref name="common-presentation-effect-attlist"/>
+        <optional>
+            <ref name="presentation-sound"/>
+        </optional>
+    </element>
+</define>
+<define name="presentation-hide-text">
+    <element name="presentation:hide-text">
+        <ref name="common-presentation-effect-attlist"/>
+        <optional>
+            <ref name="presentation-sound"/>
+        </optional>
+    </element>
+</define>
+<define name="presentation-dim">
+    <element name="presentation:dim">
+        <ref name="presentation-dim-attlist"/>
+        <optional>
+            <ref name="presentation-sound"/>
+        </optional>
+    </element>
+</define>
+<define name="presentation-dim-attlist" combine="interleave">
+    <attribute name="draw:shape-id">
+        <ref name="IDREF"/>
+    </attribute>
+</define>
+<define name="presentation-dim-attlist" combine="interleave">
+    <attribute name="draw:color">
+        <ref name="color"/>
+    </attribute>
+</define>
+<define name="presentation-play">
+    <element name="presentation:play">
+        <ref name="presentation-play-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="presentation-play-attlist" combine="interleave">
+    <attribute name="draw:shape-id">
+        <ref name="IDREF"/>
+    </attribute>
+    <optional>
+        <attribute name="presentation:speed" a:defaultValue="medium">
+            <ref name="presentationSpeeds"/>
+        </attribute>
+    </optional>
+</define>
+<define name="presentation-animation-group">
+    <element name="presentation:animation-group">
+        <zeroOrMore>
+            <ref name="presentation-animation-elements"/>
+        </zeroOrMore>
+    </element>
+</define>
+<define name="common-anim-attlist" combine="interleave">
+    <optional>
+        <attribute name="presentation:node-type" a:defaultValue="default">
+            <choice>
+                <value>default</value>
+                <value>on-click</value>
+                <value>with-previous</value>
+                <value>after-previous</value>
+                <value>timing-root</value>
+                <value>main-sequence</value>
+                <value>interactive-sequence</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="common-anim-attlist" combine="interleave">
+    <optional>
+        <attribute name="presentation:preset-id">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-anim-attlist" combine="interleave">
+    <optional>
+        <attribute name="presentation:preset-sub-type">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-anim-attlist" combine="interleave">
+    <optional>
+        <attribute name="presentation:preset-class" a:defaultValue="custom">
+            <choice>
+                <value>custom</value>
+                <value>entrance</value>
+                <value>exit</value>
+                <value>emphasis</value>
+                <value>motion-path</value>
+                <value>ole-action</value>
+                <value>media-call</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="common-anim-attlist" combine="interleave">
+    <optional>
+        <attribute name="presentation:master-element">
+            <ref name="IDREF"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-anim-attlist" combine="interleave">
+    <optional>
+        <attribute name="presentation:group-id">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="presentation-event-listener">
+    <element name="presentation:event-listener">
+        <ref name="presentation-event-listener-attlist"/>
+        <optional>
+            <ref name="presentation-sound"/>
+        </optional>
+    </element>
+</define>
+<define name="presentation-event-listener-attlist" combine="interleave">
+    <attribute name="script:event-name">
+        <ref name="string"/>
+    </attribute>
+</define>
+<define name="presentation-event-listener-attlist" combine="interleave">
+    <attribute name="presentation:action">
+        <choice>
+            <value>none</value>
+            <value>previous-page</value>
+            <value>next-page</value>
+            <value>first-page</value>
+            <value>last-page</value>
+            <value>hide</value>
+            <value>stop</value>
+            <value>execute</value>
+            <value>show</value>
+            <value>verb</value>
+            <value>fade-out</value>
+            <value>sound</value>
+        </choice>
+    </attribute>
+</define>
+<define name="presentation-event-listener-attlist" combine="interleave">
+    <optional>
+        <attribute name="presentation:effect" a:defaultValue="none">
+            <ref name="presentationEffects"/>
+        </attribute>
+    </optional>
+</define>
+<define name="presentation-event-listener-attlist" combine="interleave">
+    <optional>
+        <attribute name="presentation:direction" a:defaultValue="none">
+            <ref name="presentationEffectDirections"/>
+        </attribute>
+    </optional>
+</define>
+<define name="presentation-event-listener-attlist" combine="interleave">
+    <optional>
+        <attribute name="presentation:speed" a:defaultValue="medium">
+            <ref name="presentationSpeeds"/>
+        </attribute>
+    </optional>
+</define>
+<define name="presentation-event-listener-attlist" combine="interleave">
+    <optional>
+        <attribute name="presentation:start-scale" a:defaultValue="100%">
+            <ref name="percent"/>
+        </attribute>
+    </optional>
+</define>
+<define name="presentation-event-listener-attlist" combine="interleave">
+    <optional>
+        <attribute name="xlink:href">
+            <ref name="anyURI"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="xlink:type" a:defaultValue="simple">
+            <choice>
+                <value>simple</value>
+            </choice>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="xlink:show" a:defaultValue="embed">
+            <choice>
+                <value>embed</value>
+            </choice>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="xlink:actuate" a:defaultValue="onRequest">
+            <choice>
+                <value>onRequest</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="presentation-event-listener-attlist" combine="interleave">
+    <optional>
+        <attribute name="presentation:verb">
+            <ref name="nonNegativeInteger"/>
+        </attribute>
+    </optional>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="presentation:header">
+        <empty/>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="presentation:footer">
+        <empty/>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="presentation:date-time">
+        <empty/>
+    </element>
+</define>
+<define name="presentation-decls">
+    <zeroOrMore>
+        <ref name="presentation-decl"/>
+    </zeroOrMore>
+</define>
+<define name="presentation-decl" combine="choice">
+    <element name="presentation:header-decl">
+        <ref name="presentation-header-decl-attlist"/>
+        <text/>
+    </element>
+</define>
+<define name="presentation-header-decl-attlist" combine="interleave">
+    <attribute name="presentation:name">
+        <ref name="string"/>
+    </attribute>
+</define>
+<define name="presentation-decl" combine="choice">
+    <element name="presentation:footer-decl">
+        <ref name="presentation-footer-decl-attlist"/>
+        <text/>
+    </element>
+</define>
+<define name="presentation-footer-decl-attlist" combine="interleave">
+    <attribute name="presentation:name">
+        <ref name="string"/>
+    </attribute>
+</define>
+<define name="presentation-decl" combine="choice">
+    <element name="presentation:date-time-decl">
+        <ref name="presentation-date-time-decl-attlist"/>
+        <text/>
+    </element>
+</define>
+<define name="presentation-date-time-decl-attlist" combine="interleave">
+    <attribute name="presentation:name">
+        <ref name="string"/>
+    </attribute>
+</define>
+<define name="presentation-date-time-decl-attlist" combine="interleave">
+    <attribute name="presentation:source">
+        <choice>
+            <value>fixed</value>
+            <value>current-date</value>
+        </choice>
+    </attribute>
+</define>
+<define name="presentation-date-time-decl-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:data-style-name">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+<define name="presentation-settings">
+    <optional>
+        <element name="presentation:settings">
+            <ref name="presentation-settings-attlist"/>
+            <zeroOrMore>
+                <ref name="presentation-show"/>
+            </zeroOrMore>
+        </element>
+    </optional>
+</define>
+<define name="presentation-settings-attlist" combine="interleave">
+    <optional>
+        <attribute name="presentation:start-page">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="presentation-settings-attlist" combine="interleave">
+    <optional>
+        <attribute name="presentation:show">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="presentation-settings-attlist" combine="interleave">
+    <optional>
+        <attribute name="presentation:full-screen" a:defaultValue="true">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="presentation-settings-attlist" combine="interleave">
+    <optional>
+        <attribute name="presentation:endless" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="presentation-settings-attlist" combine="interleave">
+    <optional>
+        <attribute name="presentation:pause">
+            <ref name="duration"/>
+        </attribute>
+    </optional>
+</define>
+<define name="presentation-settings-attlist" combine="interleave">
+    <optional>
+        <attribute name="presentation:show-logo" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="presentation-settings-attlist" combine="interleave">
+    <optional>
+        <attribute name="presentation:force-manual" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="presentation-settings-attlist" combine="interleave">
+    <optional>
+        <attribute name="presentation:mouse-visible" a:defaultValue="true">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="presentation-settings-attlist" combine="interleave">
+    <optional>
+        <attribute name="presentation:mouse-as-pen" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="presentation-settings-attlist" combine="interleave">
+    <optional>
+        <attribute name="presentation:start-with-navigator"
+                   a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="presentation-settings-attlist" combine="interleave">
+    <optional>
+        <attribute name="presentation:animations" a:defaultValue="enabled">
+            <choice>
+                <value>enabled</value>
+                <value>disabled</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="presentation-settings-attlist" combine="interleave">
+    <optional>
+        <attribute name="presentation:transition-on-click"
+                   a:defaultValue="enabled">
+            <choice>
+                <value>enabled</value>
+                <value>disabled</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="presentation-settings-attlist" combine="interleave">
+    <optional>
+        <attribute name="presentation:stay-on-top" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="presentation-settings-attlist" combine="interleave">
+    <optional>
+        <attribute name="presentation:show-end-of-presentation-slide"
+                   a:defaultValue="true">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="presentation-show">
+    <element name="presentation:show">
+        <ref name="presentation-show-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="presentation-show-attlist" combine="interleave">
+    <attribute name="presentation:name">
+        <ref name="string"/>
+    </attribute>
+</define>
+<define name="presentation-show-attlist" combine="interleave">
+    <attribute name="presentation:pages"/>
+</define>
+<define name="chart-chart">
+    <element name="chart:chart">
+        <ref name="chart-chart-attlist"/>
+        <optional>
+            <ref name="chart-title"/>
+        </optional>
+        <optional>
+            <ref name="chart-subtitle"/>
+        </optional>
+        <optional>
+            <ref name="chart-footer"/>
+        </optional>
+        <optional>
+            <ref name="chart-legend"/>
+        </optional>
+        <ref name="chart-plot-area"/>
+        <optional>
+            <ref name="table-table"/>
+        </optional>
+    </element>
+</define>
+<define name="chart-chart-attlist" combine="interleave">
+    <attribute name="chart:class">
+        <ref name="namespacedToken"/>
+    </attribute>
+</define>
+<define name="chart-chart-attlist" combine="interleave">
+    <ref name="common-draw-size-attlist"/>
+</define>
+<define name="chart-chart-attlist" combine="interleave">
+    <optional>
+        <attribute name="chart:column-mapping">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="chart-chart-attlist" combine="interleave">
+    <optional>
+        <attribute name="chart:row-mapping">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="chart-chart-attlist" combine="interleave">
+    <optional>
+        <attribute name="chart:style-name">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+<define name="chart-title">
+    <element name="chart:title">
+        <ref name="chart-title-attlist"/>
+        <optional>
+            <ref name="text-p"/>
+        </optional>
+    </element>
+</define>
+<define name="chart-title-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:cell-range">
+            <ref name="cellAddress"/>
+        </attribute>
+    </optional>
+</define>
+<define name="chart-title-attlist" combine="interleave">
+    <ref name="common-draw-position-attlist"/>
+</define>
+<define name="chart-title-attlist" combine="interleave">
+    <optional>
+        <attribute name="chart:style-name">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+<define name="chart-subtitle">
+    <element name="chart:subtitle">
+        <ref name="chart-title-attlist"/>
+        <optional>
+            <ref name="text-p"/>
+        </optional>
+    </element>
+</define>
+<define name="chart-footer">
+    <element name="chart:footer">
+        <ref name="chart-title-attlist"/>
+        <optional>
+            <ref name="text-p"/>
+        </optional>
+    </element>
+</define>
+<define name="chart-legend">
+    <element name="chart:legend">
+        <ref name="chart-legend-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="chart-legend-attlist" combine="interleave">
+    <choice>
+        <group>
+            <attribute name="chart:legend-position">
+                <choice>
+                    <value>start</value>
+                    <value>end</value>
+                    <value>top</value>
+                    <value>bottom</value>
+                </choice>
+            </attribute>
+            <optional>
+                <attribute name="chart:legend-align">
+                    <choice>
+                        <value>start</value>
+                        <value>center</value>
+                        <value>end</value>
+                    </choice>
+                </attribute>
+            </optional>
+        </group>
+        <attribute name="chart:legend-position">
+            <choice>
+                <value>top-start</value>
+                <value>bottom-start</value>
+                <value>top-end</value>
+                <value>bottom-end</value>
+            </choice>
+        </attribute>
+        <empty/>
+    </choice>
+</define>
+<define name="chart-legend-attlist" combine="interleave">
+    <ref name="common-draw-position-attlist"/>
+</define>
+<define name="chart-legend-attlist" combine="interleave">
+    <choice>
+        <attribute name="style:legend-expansion">
+            <choice>
+                <value>wide</value>
+                <value>high</value>
+                <value>balanced</value>
+            </choice>
+        </attribute>
+        <group>
+            <attribute name="style:legend-expansion">
+                <value>custom</value>
+            </attribute>
+            <attribute name="style:legend-expansion-aspect-ratio">
+                <ref name="double"/>
+            </attribute>
+        </group>
+        <empty/>
+    </choice>
+</define>
+<define name="chart-legend-attlist" combine="interleave">
+    <optional>
+        <attribute name="chart:style-name">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+<define name="chart-plot-area">
+    <element name="chart:plot-area">
+        <ref name="chart-plot-area-attlist"/>
+        <zeroOrMore>
+            <ref name="dr3d-light"/>
+        </zeroOrMore>
+        <zeroOrMore>
+            <ref name="chart-axis"/>
+        </zeroOrMore>
+        <zeroOrMore>
+            <ref name="chart-series"/>
+        </zeroOrMore>
+        <optional>
+            <ref name="chart-stock-gain-marker"/>
+        </optional>
+        <optional>
+            <ref name="chart-stock-loss-marker"/>
+        </optional>
+        <optional>
+            <ref name="chart-stock-range-line"/>
+        </optional>
+        <optional>
+            <ref name="chart-wall"/>
+        </optional>
+        <optional>
+            <ref name="chart-floor"/>
+        </optional>
+    </element>
+</define>
+<define name="chart-plot-area-attlist" combine="interleave">
+    <ref name="common-draw-position-attlist"/>
+    <ref name="common-draw-size-attlist"/>
+</define>
+<define name="chart-plot-area-attlist" combine="interleave">
+    <optional>
+        <attribute name="chart:style-name">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+<define name="chart-plot-area-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:cell-range-address">
+            <ref name="cellRangeAddress"/>
+        </attribute>
+    </optional>
+</define>
+<define name="chart-plot-area-attlist" combine="interleave">
+    <optional>
+        <attribute name="chart:data-source-has-labels" a:defaultValue="none">
+            <choice>
+                <value>none</value>
+                <value>row</value>
+                <value>column</value>
+                <value>both</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="chart-plot-area-attlist" combine="interleave">
+    <ref name="dr3d-scene-attlist"/>
+    <ref name="common-dr3d-transform-attlist"/>
+</define>
+<define name="chart-wall">
+    <element name="chart:wall">
+        <ref name="chart-wall-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="chart-wall-attlist" combine="interleave">
+    <optional>
+        <attribute name="svg:width">
+            <ref name="length"/>
+        </attribute>
+    </optional>
+</define>
+<define name="chart-wall-attlist" combine="interleave">
+    <optional>
+        <attribute name="chart:style-name">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+<define name="chart-floor">
+    <element name="chart:floor">
+        <ref name="chart-floor-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="chart-floor-attlist" combine="interleave">
+    <optional>
+        <attribute name="svg:width">
+            <ref name="length"/>
+        </attribute>
+    </optional>
+</define>
+<define name="chart-floor-attlist" combine="interleave">
+    <optional>
+        <attribute name="chart:style-name">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+<define name="chart-axis">
+    <element name="chart:axis">
+        <ref name="chart-axis-attlist"/>
+        <optional>
+            <ref name="chart-title"/>
+        </optional>
+        <optional>
+            <ref name="chart-categories"/>
+        </optional>
+        <zeroOrMore>
+            <ref name="chart-grid"/>
+        </zeroOrMore>
+    </element>
+</define>
+<define name="chart-axis-attlist" combine="interleave">
+    <attribute name="chart:dimension">
+        <choice>
+            <value>x</value>
+            <value>y</value>
+            <value>z</value>
+        </choice>
+    </attribute>
+</define>
+<define name="chart-axis-attlist" combine="interleave">
+    <optional>
+        <attribute name="chart:name">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="chart-axis-attlist" combine="interleave">
+    <optional>
+        <attribute name="chart:style-name">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+<define name="chart-grid">
+    <element name="chart:grid">
+        <ref name="chart-grid-attlist"/>
+    </element>
+</define>
+<define name="chart-grid-attlist" combine="interleave">
+    <optional>
+        <attribute name="chart:class" a:defaultValue="major">
+            <choice>
+                <value>major</value>
+                <value>minor</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="chart-grid-attlist" combine="interleave">
+    <optional>
+        <attribute name="chart:style-name">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+<define name="chart-series">
+    <element name="chart:series">
+        <ref name="chart-series-attlist"/>
+        <zeroOrMore>
+            <ref name="chart-domain"/>
+        </zeroOrMore>
+        <optional>
+            <ref name="chart-mean-value"/>
+        </optional>
+        <optional>
+            <ref name="chart-regression-curve"/>
+        </optional>
+        <optional>
+            <ref name="chart-error-indicator"/>
+        </optional>
+        <zeroOrMore>
+            <ref name="chart-data-point"/>
+        </zeroOrMore>
+    </element>
+</define>
+<define name="chart-series-attlist" combine="interleave">
+    <optional>
+        <attribute name="chart:values-cell-range-address">
+            <ref name="cellRangeAddress"/>
+        </attribute>
+    </optional>
+</define>
+<define name="chart-series-attlist" combine="interleave">
+    <optional>
+        <attribute name="chart:label-cell-address">
+            <ref name="cellAddress"/>
+        </attribute>
+    </optional>
+</define>
+<define name="chart-series-attlist" combine="interleave">
+    <optional>
+        <attribute name="chart:class">
+            <ref name="namespacedToken"/>
+        </attribute>
+    </optional>
+</define>
+<define name="chart-series-attlist" combine="interleave">
+    <optional>
+        <attribute name="chart:attached-axis">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="chart-series-attlist" combine="interleave">
+    <optional>
+        <attribute name="chart:style-name">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+<define name="chart-domain">
+    <element name="chart:domain">
+    <optional>
+        <attribute name="table:cell-range-address">
+            <ref name="cellRangeAddress"/>
+        </attribute>
+    </optional>
+    </element>
+</define>
+<define name="chart-categories">
+    <element name="chart:categories">
+    <optional>
+        <attribute name="table:cell-range-address">
+            <ref name="cellRangeAddress"/>
+        </attribute>
+    </optional>
+    </element>
+</define>
+<define name="chart-data-point">
+    <element name="chart:data-point">
+        <ref name="chart-data-point-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="chart-data-point-attlist" combine="interleave">
+    <optional>
+        <attribute name="chart:repeated">
+            <ref name="nonNegativeInteger"/>
+        </attribute>
+    </optional>
+</define>
+<define name="chart-data-point-attlist" combine="interleave">
+    <optional>
+        <attribute name="chart:style-name">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+
+<define name="chart-mean-value">
+    <element name="chart:mean-value">
+        <ref name="chart-mean-value-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="chart-mean-value-attlist" combine="interleave">
+    <optional>
+        <attribute name="chart:style-name">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+<define name="chart-error-indicator">
+    <element name="chart:error-indicator">
+        <ref name="chart-error-indicator-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="chart-error-indicator-attlist" combine="interleave">
+    <optional>
+        <attribute name="chart:style-name">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+<define name="chart-regression-curve">
+    <element name="chart:regression-curve">
+        <ref name="chart-regression-curve-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="chart-regression-curve-attlist" combine="interleave">
+    <optional>
+        <attribute name="chart:style-name">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+<define name="chart-stock-gain-marker">
+    <element name="chart:stock-gain-marker">
+        <ref name="common-stock-marker-attlist"/>
+    </element>
+</define>
+<define name="chart-stock-loss-marker">
+    <element name="chart:stock-loss-marker">
+        <ref name="common-stock-marker-attlist"/>
+    </element>
+</define>
+<define name="chart-stock-range-line">
+    <element name="chart:stock-range-line">
+        <ref name="common-stock-marker-attlist"/>
+    </element>
+</define>
+<define name="common-stock-marker-attlist">
+    <optional>
+        <attribute name="chart:style-name">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+<define name="office-forms">
+    <optional>
+        <element name="office:forms">
+            <ref name="office-forms-attlist"/>
+            <zeroOrMore>
+                <choice>
+                    <ref name="form-form"/>
+                    <ref name="xforms-model"/>
+                </choice>
+            </zeroOrMore>
+        </element>
+    </optional>
+</define>
+<define name="office-forms-attlist" combine="interleave">
+    <optional>
+        <attribute name="form:automatic-focus" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="office-forms-attlist" combine="interleave">
+    <optional>
+        <attribute name="form:apply-design-mode" a:defaultValue="true">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="form-form">
+    <element name="form:form">
+        <ref name="common-form-control-attlist"/>
+        <ref name="form-form-attlist"/>
+        <optional>
+            <ref name="form-properties"/>
+        </optional>
+        <optional>
+            <ref name="office-event-listeners"/>
+        </optional>
+        <zeroOrMore>
+            <choice>
+                <ref name="controls"/>
+                <ref name="form-form"/>
+            </choice>
+        </zeroOrMore>
+        <optional>
+            <ref name="form-connection-resource"/>
+        </optional>
+    </element>
+</define>
+<define name="form-form-attlist" combine="interleave">
+    <optional>
+        <attribute name="xlink:href">
+            <ref name="anyURI"/>
+        </attribute>
+        <optional>
+            <attribute name="xlink:type" a:defaultValue="simple">
+                <value>simple</value>
+            </attribute>
+        </optional>
+        <optional>
+            <attribute name="xlink:actuate" a:defaultValue="onRequest">
+                <value>onRequest</value>
+            </attribute>
+        </optional>
+    </optional>
+</define>
+<define name="form-form-attlist" combine="interleave">
+    <optional>
+        <attribute name="office:target-frame" a:defaultValue="_blank">
+            <ref name="targetFrameName"/>
+        </attribute>
+    </optional>
+</define>
+<define name="form-form-attlist" combine="interleave">
+    <optional>
+        <attribute name="form:method" a:defaultValue="get">
+            <choice>
+                <value>get</value>
+                <value>post</value>
+                <ref name="string"/>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="form-form-attlist" combine="interleave">
+    <optional>
+        <attribute name="form:enctype" 
+                    a:defaultValue="application/x-www-form-urlencoded">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="form-form-attlist" combine="interleave">
+    <optional>
+        <attribute name="form:allow-deletes" a:defaultValue="true">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="form-form-attlist" combine="interleave">
+    <optional>
+        <attribute name="form:allow-inserts" a:defaultValue="true">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="form-form-attlist" combine="interleave">
+    <optional>
+        <attribute name="form:allow-updates" a:defaultValue="true">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="form-form-attlist" combine="interleave">
+    <optional>
+        <attribute name="form:apply-filter" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="form-form-attlist" combine="interleave">
+    <optional>
+        <attribute name="form:command-type" a:defaultValue="command">
+            <choice>
+                <value>table</value>
+                <value>query</value>
+                <value>command</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="form-form-attlist" combine="interleave">
+    <optional>
+        <attribute name="form:command"/>
+    </optional>
+</define>
+<define name="form-form-attlist" combine="interleave">
+    <optional>
+        <attribute name="form:datasource">
+            <choice>
+                <ref name="anyURI"/>
+                <ref name="string"/>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="form-form-attlist" combine="interleave">
+    <optional>
+        <attribute name="form:master-fields">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="form-form-attlist" combine="interleave">
+    <optional>
+        <attribute name="form:detail-fields">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="form-form-attlist" combine="interleave">
+    <optional>
+        <attribute name="form:escape-processing" a:defaultValue="true">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="form-form-attlist" combine="interleave">
+    <optional>
+        <attribute name="form:filter">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="form-form-attlist" combine="interleave">
+    <optional>
+        <attribute name="form:ignore-result" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="form-form-attlist" combine="interleave">
+    <optional>
+        <attribute name="form:navigation-mode">
+            <ref name="navigation"/>
+        </attribute>
+    </optional>
+</define>
+
+<define name="navigation">
+    <choice>
+        <value>none</value>
+        <value>current</value>
+        <value>parent</value>
+    </choice>
+</define>
+<define name="form-form-attlist" combine="interleave">
+    <optional>
+        <attribute name="form:order">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="form-form-attlist" combine="interleave">
+    <optional>
+        <attribute name="form:tab-cycle">
+            <ref name="tab-cycles"/>
+        </attribute>
+    </optional>
+</define>
+<define name="tab-cycles">
+    <choice>
+        <value>records</value>
+        <value>current</value>
+        <value>page</value>
+    </choice>
+</define>
+<define name="form-connection-resource">
+    <element name="form:connection-resource">
+        <attribute name="xlink:href">
+            <ref name="anyURI"/>
+        </attribute>
+        <empty/>
+    </element>
+</define>
+<define name="xforms-model">
+    <element name="xforms:model">
+        <ref name="anyAttListOrElements"/>
+    </element>
+</define>
+<define name="column-controls" combine="choice">
+    <element name="form:text">
+        <ref name="form-text-attlist"/>
+        <ref name="common-form-control-content"/>
+    </element>
+</define>
+<define name="controls" combine="choice">
+    <ref name="column-controls"/>
+</define>
+<define name="form-text-attlist">
+    <ref name="form-control-attlist"/>
+    <ref name="common-current-value-attlist"/>
+    <ref name="common-disabled-attlist"/>
+    <ref name="common-maxlength-attlist"/>
+    <ref name="common-printable-attlist"/>
+    <ref name="common-readonly-attlist"/>
+    <ref name="common-tab-attlist"/>
+    <ref name="common-title-attlist"/>
+    <ref name="common-value-attlist"/>
+    <ref name="common-convert-empty-attlist"/>
+    <ref name="common-data-field-attlist"/>
+</define>
+<define name="form-control-attlist">
+    <ref name="common-form-control-attlist"/>
+    <ref name="common-control-id-attlist"/>
+    <ref name="xforms-bind-attlist"/>
+</define>
+<define name="common-form-control-content">
+    <optional>
+        <ref name="form-properties"/>
+    </optional>
+    <optional>
+        <ref name="office-event-listeners"/>
+    </optional>
+</define>
+<define name="column-controls" combine="choice">
+    <element name="form:textarea">
+        <ref name="form-textarea-attlist"/>
+        <ref name="common-form-control-content"/>
+        <zeroOrMore>
+            <ref name="text-p"/>
+        </zeroOrMore>
+    </element>
+</define>
+<define name="form-textarea-attlist">
+    <ref name="form-control-attlist"/>
+    <ref name="common-current-value-attlist"/>
+    <ref name="common-disabled-attlist"/>
+    <ref name="common-maxlength-attlist"/>
+    <ref name="common-printable-attlist"/>
+    <ref name="common-readonly-attlist"/>
+    <ref name="common-tab-attlist"/>
+    <ref name="common-title-attlist"/>
+    <ref name="common-value-attlist"/>
+    <ref name="common-convert-empty-attlist"/>
+    <ref name="common-data-field-attlist"/>
+</define>
+<define name="controls" combine="choice">
+    <element name="form:password">
+        <ref name="form-password-attlist"/>
+        <ref name="common-form-control-content"/>
+    </element>
+</define>
+<define name="form-password-attlist" combine="interleave">
+    <ref name="form-control-attlist"/>
+    <ref name="common-disabled-attlist"/>
+    <ref name="common-maxlength-attlist"/>
+    <ref name="common-printable-attlist"/>
+    <ref name="common-tab-attlist"/>
+    <ref name="common-title-attlist"/>
+    <ref name="common-value-attlist"/>
+    <ref name="common-convert-empty-attlist"/>
+</define>
+<define name="form-password-attlist" combine="interleave">
+    <optional>
+        <attribute name="form:echo-char" a:defaultValue="*">
+            <ref name="character"/>
+        </attribute>
+    </optional>
+</define>
+<define name="controls" combine="choice">
+    <element name="form:file">
+        <ref name="form-file-attlist"/>
+        <ref name="common-form-control-content"/>
+    </element>
+</define>
+<define name="form-file-attlist" combine="interleave">
+    <ref name="form-control-attlist"/>
+    <ref name="common-current-value-attlist"/>
+    <ref name="common-disabled-attlist"/>
+    <ref name="common-maxlength-attlist"/>
+    <ref name="common-printable-attlist"/>
+    <ref name="common-readonly-attlist"/>
+    <ref name="common-tab-attlist"/>
+    <ref name="common-title-attlist"/>
+    <ref name="common-value-attlist"/>
+</define>
+<define name="column-controls" combine="choice">
+    <element name="form:formatted-text">
+        <ref name="form-formatted-text-attlist"/>
+        <ref name="common-form-control-content"/>
+    </element>
+</define>
+<define name="form-formatted-text-attlist" combine="interleave">
+    <ref name="form-control-attlist"/>
+    <ref name="common-current-value-attlist"/>
+    <ref name="common-disabled-attlist"/>
+    <ref name="common-maxlength-attlist"/>
+    <ref name="common-printable-attlist"/>
+    <ref name="common-readonly-attlist"/>
+    <ref name="common-tab-attlist"/>
+    <ref name="common-title-attlist"/>
+    <ref name="common-value-attlist"/>
+    <ref name="common-convert-empty-attlist"/>
+    <ref name="common-data-field-attlist"/>
+</define>
+<define name="form-formatted-text-attlist" combine="interleave">
+    <optional>
+        <attribute name="form:max-value">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="form-formatted-text-attlist" combine="interleave">
+    <optional>
+        <attribute name="form:min-value">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="form-formatted-text-attlist" combine="interleave">
+    <optional>
+        <attribute name="form:validation" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="column-controls" combine="choice">
+    <element name="form:number">
+        <ref name="form-number-attlist"/>
+        <ref name="common-numeric-control-attlist"/>
+        <ref name="common-form-control-content"/>
+    </element>
+</define>
+<define name="common-numeric-control-attlist">
+    <ref name="form-control-attlist"/>
+    <ref name="common-disabled-attlist"/>
+    <ref name="common-maxlength-attlist"/>
+    <ref name="common-printable-attlist"/>
+    <ref name="common-readonly-attlist"/>
+    <ref name="common-tab-attlist"/>
+    <ref name="common-title-attlist"/>
+    <ref name="common-convert-empty-attlist"/>
+    <ref name="common-data-field-attlist"/>
+</define>
+<define name="form-number-attlist" combine="interleave">
+    <optional>
+        <attribute name="form:value">
+            <ref name="double"/>
+        </attribute>
+    </optional>
+</define>
+<define name="form-number-attlist" combine="interleave">
+    <optional>
+        <attribute name="form:current-value">
+            <ref name="double"/>
+        </attribute>
+    </optional>
+</define>
+<define name="form-number-attlist" combine="interleave">
+    <optional>
+        <attribute name="form:min-value">
+            <ref name="double"/>
+        </attribute>
+    </optional>
+</define>
+<define name="form-number-attlist" combine="interleave">
+    <optional>
+        <attribute name="form:max-value">
+            <ref name="double"/>
+        </attribute>
+    </optional>
+</define>
+<define name="column-controls" combine="choice">
+    <element name="form:date">
+        <ref name="form-date-attlist"/>
+        <ref name="common-numeric-control-attlist"/>
+        <ref name="common-form-control-content"/>
+    </element>
+</define>
+<define name="controls" combine="choice">
+    <element name="form:time">
+        <ref name="form-time-attlist"/>
+        <ref name="common-numeric-control-attlist"/>
+        <ref name="common-form-control-content"/>
+    </element>
+</define>
+<define name="form-date-attlist" combine="interleave">
+    <optional>
+        <attribute name="form:value">
+            <ref name="date"/>
+        </attribute>
+    </optional>
+</define>
+<define name="form-time-attlist" combine="interleave">
+    <optional>
+        <attribute name="form:value">
+            <ref name="time"/>
+        </attribute>
+    </optional>
+</define>
+<define name="form-date-attlist" combine="interleave">
+    <optional>
+        <attribute name="form:current-value">
+            <ref name="date"/>
+        </attribute>
+    </optional>
+</define>
+<define name="form-time-attlist" combine="interleave">
+    <optional>
+        <attribute name="form:current-value">
+            <ref name="time"/>
+        </attribute>
+    </optional>
+</define>
+<define name="form-date-attlist" combine="interleave">
+    <optional>
+        <attribute name="form:min-value">
+            <ref name="date"/>
+        </attribute>
+    </optional>
+</define>
+<define name="form-time-attlist" combine="interleave">
+    <optional>
+        <attribute name="form:min-value">
+            <ref name="time"/>
+        </attribute>
+    </optional>
+</define>
+<define name="form-date-attlist" combine="interleave">
+    <optional>
+        <attribute name="form:max-value">
+            <ref name="date"/>
+        </attribute>
+    </optional>
+</define>
+<define name="form-time-attlist" combine="interleave">
+    <optional>
+        <attribute name="form:max-value">
+            <ref name="time"/>
+        </attribute>
+    </optional>
+</define>
+<define name="controls" combine="choice">
+    <element name="form:fixed-text">
+        <ref name="form-fixed-text-attlist"/>
+        <ref name="common-form-control-content"/>
+    </element>
+</define>
+<define name="form-fixed-text-attlist" combine="interleave">
+    <ref name="form-control-attlist"/>
+    <ref name="for"/>
+    <ref name="common-disabled-attlist"/>
+    <ref name="label"/>
+    <ref name="common-printable-attlist"/>
+    <ref name="common-title-attlist"/>
+</define>
+<define name="form-fixed-text-attlist" combine="interleave">
+    <optional>
+        <attribute name="form:multi-line" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="column-controls" combine="choice">
+    <element name="form:combobox">
+        <ref name="form-combobox-attlist"/>
+        <ref name="common-form-control-content"/>
+        <zeroOrMore>
+            <ref name="form-item"/>
+        </zeroOrMore>
+    </element>
+</define>
+<define name="form-combobox-attlist" combine="interleave">
+    <ref name="form-control-attlist"/>
+    <ref name="common-current-value-attlist"/>
+    <ref name="common-disabled-attlist"/>
+    <ref name="dropdown"/>
+    <ref name="common-maxlength-attlist"/>
+    <ref name="common-printable-attlist"/>
+    <ref name="common-readonly-attlist"/>
+    <ref name="size"/>
+    <ref name="common-tab-attlist"/>
+    <ref name="common-title-attlist"/>
+    <ref name="common-value-attlist"/>
+    <ref name="common-convert-empty-attlist"/>
+    <ref name="common-data-field-attlist"/>
+    <ref name="list-source"/>
+    <ref name="list-source-type"/>
+</define>
+<define name="form-combobox-attlist" combine="interleave">
+    <optional>
+        <attribute name="form:auto-complete">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="form-item">
+    <element name="form:item">
+        <ref name="form-item-attlist"/>
+        <text/>
+    </element>
+</define>
+<define name="form-item-attlist" combine="interleave">
+    <ref name="label"/>
+</define>
+<define name="column-controls" combine="choice">
+    <element name="form:listbox">
+        <ref name="form-listbox-attlist"/>
+        <ref name="common-form-control-content"/>
+        <zeroOrMore>
+            <ref name="form-option"/>
+        </zeroOrMore>
+    </element>
+</define>
+<define name="form-listbox-attlist" combine="interleave">
+    <ref name="form-control-attlist"/>
+    <ref name="common-disabled-attlist"/>
+    <ref name="dropdown"/>
+    <ref name="common-printable-attlist"/>
+    <ref name="size"/>
+    <ref name="common-tab-attlist"/>
+    <ref name="common-title-attlist"/>
+    <ref name="bound-column"/>
+    <ref name="common-data-field-attlist"/>
+    <ref name="list-source"/>
+    <ref name="list-source-type"/>
+</define>
+<define name="form-listbox-attlist" combine="interleave">
+    <optional>
+        <attribute name="form:multiple" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="form-listbox-attlist" combine="interleave">
+    <optional>
+        <attribute name="form:xforms-list-source">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="form-option">
+    <element name="form:option">
+        <ref name="form-option-attlist"/>
+        <text/>
+    </element>
+</define>
+<define name="form-option-attlist" combine="interleave">
+    <ref name="current-selected"/>
+    <ref name="selected"/>
+    <ref name="label"/>
+    <ref name="common-value-attlist"/>
+</define>
+<define name="controls" combine="choice">
+    <element name="form:button">
+        <ref name="form-button-attlist"/>
+        <ref name="common-form-control-content"/>
+    </element>
+</define>
+<define name="form-button-attlist" combine="interleave">
+    <ref name="form-control-attlist"/>
+    <ref name="button-type"/>
+    <ref name="common-disabled-attlist"/>
+    <ref name="label"/>
+    <ref name="image-data"/>
+    <ref name="common-printable-attlist"/>
+    <ref name="common-tab-attlist"/>
+    <ref name="target-frame"/>
+    <ref name="target-location"/>
+    <ref name="common-title-attlist"/>
+    <ref name="common-value-attlist"/>
+    <ref name="common-form-relative-image-position-attlist"/>
+</define>
+<define name="form-button-attlist" combine="interleave">
+    <optional>
+        <attribute name="form:default-button" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="form-button-attlist" combine="interleave">
+    <optional>
+        <attribute name="form:toggle" a:default-value="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="form-button-attlist" combine="interleave">
+    <optional>
+        <attribute name="form:focus-on-click">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="form-button-attlist" combine="interleave">
+    <optional>
+        <attribute name="form:xforms-submission">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="controls" combine="choice">
+    <element name="form:image">
+        <ref name="form-image-attlist"/>
+        <ref name="common-form-control-content"/>
+    </element>
+</define>
+<define name="form-image-attlist" combine="interleave">
+    <ref name="form-control-attlist"/>
+    <ref name="button-type"/>
+    <ref name="common-disabled-attlist"/>
+    <ref name="image-data"/>
+    <ref name="common-printable-attlist"/>
+    <ref name="common-tab-attlist"/>
+    <ref name="target-frame"/>
+    <ref name="target-location"/>
+    <ref name="common-title-attlist"/>
+    <ref name="common-value-attlist"/>
+</define>
+<define name="column-controls" combine="choice">
+    <element name="form:checkbox">
+        <ref name="form-checkbox-attlist"/>
+        <ref name="common-form-control-content"/>
+    </element>
+</define>
+<define name="form-checkbox-attlist" combine="interleave">
+    <ref name="form-control-attlist"/>
+    <ref name="common-disabled-attlist"/>
+    <ref name="label"/>
+    <ref name="common-printable-attlist"/>
+    <ref name="common-tab-attlist"/>
+    <ref name="common-title-attlist"/>
+    <ref name="common-value-attlist"/>
+    <ref name="common-data-field-attlist"/>
+    <ref name="common-form-visual-effect-attlist"/>
+    <ref name="common-form-relative-image-position-attlist"/>
+</define>
+<define name="states">
+    <choice>
+        <value>unchecked</value>
+        <value>checked</value>
+        <value>unknown</value>
+    </choice>
+</define>
+<define name="form-checkbox-attlist" combine="interleave">
+    <optional>
+        <attribute name="form:current-state">
+            <ref name="states"/>
+        </attribute>
+    </optional>
+</define>
+<define name="form-checkbox-attlist" combine="interleave">
+    <optional>
+        <attribute name="form:is-tristate" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="form-checkbox-attlist" combine="interleave">
+    <optional>
+        <attribute name="form:state" a:defaultValue="unchecked">
+            <ref name="states"/>
+        </attribute>
+    </optional>
+</define>
+<define name="controls" combine="choice">
+    <element name="form:radio">
+        <ref name="form-radio-attlist"/>
+        <ref name="common-form-control-content"/>
+    </element>
+</define>
+<define name="form-radio-attlist" combine="interleave">
+    <ref name="form-control-attlist"/>
+    <ref name="current-selected"/>
+    <ref name="common-disabled-attlist"/>
+    <ref name="label"/>
+    <ref name="common-printable-attlist"/>
+    <ref name="selected"/>
+    <ref name="common-tab-attlist"/>
+    <ref name="common-title-attlist"/>
+    <ref name="common-value-attlist"/>
+    <ref name="common-data-field-attlist"/>
+    <ref name="common-form-visual-effect-attlist"/>
+    <ref name="common-form-relative-image-position-attlist"/>
+</define>
+<define name="controls" combine="choice">
+    <element name="form:frame">
+        <ref name="form-frame-attlist"/>
+        <ref name="common-form-control-content"/>
+    </element>
+</define>
+<define name="form-frame-attlist" combine="interleave">
+    <ref name="form-control-attlist"/>
+    <ref name="common-disabled-attlist"/>
+    <ref name="for"/>
+    <ref name="label"/>
+    <ref name="common-printable-attlist"/>
+    <ref name="common-title-attlist"/>
+</define>
+<define name="controls" combine="choice">
+    <element name="form:image-frame">
+        <ref name="form-image-frame-attlist"/>
+        <ref name="common-form-control-content"/>
+    </element>
+</define>
+<define name="form-image-frame-attlist" combine="interleave">
+    <ref name="form-control-attlist"/>
+    <ref name="common-disabled-attlist"/>
+    <ref name="image-data"/>
+    <ref name="common-printable-attlist"/>
+    <ref name="common-readonly-attlist"/>
+    <ref name="common-title-attlist"/>
+    <ref name="common-data-field-attlist"/>
+</define>
+<define name="controls" combine="choice">
+    <element name="form:hidden">
+        <ref name="form-hidden-attlist"/>
+        <ref name="common-form-control-content"/>
+    </element>
+</define>
+<define name="form-hidden-attlist" combine="interleave">
+    <ref name="form-control-attlist"/>
+    <ref name="common-value-attlist"/>
+</define>
+<define name="controls" combine="choice">
+    <element name="form:grid">
+        <ref name="form-grid-attlist"/>
+        <ref name="common-form-control-content"/>
+        <zeroOrMore>
+            <ref name="form-column"/>
+        </zeroOrMore>
+    </element>
+</define>
+<define name="form-grid-attlist" combine="interleave">
+    <ref name="form-control-attlist"/>
+    <ref name="common-disabled-attlist"/>
+    <ref name="common-printable-attlist"/>
+    <ref name="common-tab-attlist"/>
+    <ref name="common-title-attlist"/>
+</define>
+<define name="form-column">
+    <element name="form:column">
+        <ref name="form-column-attlist"/>
+        <oneOrMore>
+            <ref name="column-controls"/>
+        </oneOrMore>
+    </element>
+</define>
+<define name="form-column-attlist" combine="interleave">
+    <ref name="common-form-control-attlist"/>
+    <ref name="label"/>
+    <ref name="text-style-name"/>
+</define>
+<define name="text-style-name">
+    <optional>
+        <attribute name="form:text-style-name">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+<define name="controls" combine="choice">
+    <element name="form:value-range">
+        <ref name="form-value-range-attlist"/>
+        <ref name="common-form-control-content"/>
+    </element>
+</define>
+<define name="form-value-range-attlist" combine="interleave">
+    <ref name="form-control-attlist"/>
+    <ref name="common-disabled-attlist"/>
+    <ref name="common-printable-attlist"/>
+    <ref name="common-tab-attlist"/>
+    <ref name="common-title-attlist"/>
+    <ref name="common-value-attlist"/>
+</define>
+<define name="form-value-range-attlist" combine="interleave">
+    <optional>
+        <attribute name="form:max-value">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="form-value-range-attlist" combine="interleave">
+    <optional>
+        <attribute name="form:min-value">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="form-value-range-attlist" combine="interleave">
+    <optional>
+        <attribute name="form:step-size" a:defaultName="1">
+            <ref name="positiveInteger"/>
+        </attribute>
+    </optional>
+</define>
+<define name="form-value-range-attlist" combine="interleave">
+    <optional>
+        <attribute name="form:page-step-size">
+            <ref name="positiveInteger"/>
+        </attribute>
+    </optional>
+</define>
+<define name="form-value-range-attlist" combine="interleave">
+    <optional>
+        <attribute name="form:delay-for-repeat">
+            <ref name="duration"/>
+        </attribute>
+    </optional>
+</define>
+<define name="form-value-range-attlist" combine="interleave">
+    <optional>
+        <attribute name="form:orientation">
+            <choice>
+                <value>horizontal</value>
+                <value>vertical</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="controls" combine="choice">
+    <element name="form:generic-control">
+        <ref name="form-generic-control-attlist"/>
+        <ref name="common-form-control-content"/>
+    </element>
+</define>
+<define name="form-generic-control-attlist" combine="interleave">
+    <ref name="form-control-attlist"/>
+</define>
+<define name="common-form-control-attlist" combine="interleave">
+    <optional>
+        <attribute name="form:name">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-form-control-attlist" combine="interleave">
+    <optional>
+        <attribute name="form:control-implementation">
+            <ref name="namespacedToken"/>
+        </attribute>
+    </optional>
+</define>
+<define name="xforms-bind-attlist">
+    <optional>
+        <attribute name="xforms:bind">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="types">
+    <choice>
+        <value>submit</value>
+        <value>reset</value>
+        <value>push</value>
+        <value>url</value>
+    </choice>
+</define>
+<define name="button-type">
+    <optional>
+        <attribute name="form:button-type" a:defaultValue="push">
+            <ref name="types"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-control-id-attlist">
+    <attribute name="form:id">
+        <ref name="ID"/>
+    </attribute>
+</define>
+<define name="current-selected">
+    <optional>
+        <attribute name="form:current-selected" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-value-attlist">
+    <optional>
+        <attribute name="form:value">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-current-value-attlist">
+    <optional>
+        <attribute name="form:current-value">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-disabled-attlist">
+    <optional>
+        <attribute name="form:disabled" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="dropdown">
+    <optional>
+        <attribute name="form:dropdown" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="for">
+    <optional>
+        <attribute name="form:for">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="image-data">
+    <optional>
+        <attribute name="form:image-data">
+            <ref name="anyURI"/>
+        </attribute>
+    </optional>
+</define>
+<define name="label">
+    <optional>
+        <attribute name="form:label">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-maxlength-attlist">
+    <optional>
+        <attribute name="form:max-length">
+            <ref name="nonNegativeInteger"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-printable-attlist">
+    <optional>
+        <attribute name="form:printable" a:defaultValue="true">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-readonly-attlist">
+    <optional>
+        <attribute name="form:readonly" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="selected">
+    <optional>
+        <attribute name="form:selected" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="size">
+    <optional>
+        <attribute name="form:size">
+            <ref name="nonNegativeInteger"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-tab-attlist" combine="interleave">
+    <optional>
+        <attribute name="form:tab-index" a:defaultValue="0">
+            <ref name="nonNegativeInteger"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-tab-attlist" combine="interleave">
+    <optional>
+        <attribute name="form:tab-stop" a:defaultValue="true">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="target-frame">
+    <optional>
+        <attribute name="office:target-frame" a:defaultValue="_blank">
+            <ref name="targetFrameName"/>
+        </attribute>
+    </optional>
+</define>
+<define name="target-location">
+    <optional>
+        <attribute name="xlink:href">
+            <ref name="anyURI"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-title-attlist">
+    <optional>
+        <attribute name="form:title"/>
+    </optional>
+</define>
+<define name="common-form-visual-effect-attlist" combine="interleave">
+    <optional>
+        <attribute name="form:visual-effect">
+            <choice>
+                <value>flat</value>
+                <value>3d</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="common-form-relative-image-position-attlist"
+        combine="interleave">
+    <choice>
+        <optional>
+            <attribute name="form:image-position" a:defaultValue="center">
+                <value>center</value>
+            </attribute>
+        </optional>
+        <group>
+            <attribute name="form:image-position">
+                <choice>
+                    <value>start</value>
+                    <value>end</value>
+                    <value>top</value>
+                    <value>bottom</value>
+                </choice>
+            </attribute>
+            <optional>
+                <attribute name="form:image-align" a:defaultValue="center">
+                    <choice>
+                        <value>start</value>
+                        <value>center</value>
+                        <value>end</value>
+                    </choice>
+                </attribute>
+            </optional>
+        </group>
+    </choice>
+</define>
+<define name="bound-column">
+    <optional>
+        <attribute name="form:bound-column">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-convert-empty-attlist">
+    <optional>
+        <attribute name="form:convert-empty-to-null" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-data-field-attlist">
+    <optional>
+        <attribute name="form:data-field">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="list-source">
+    <optional>
+        <attribute name="form:list-source">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="list-source-type">
+    <optional>
+        <attribute name="form:list-source-type">
+            <choice>
+                <value>table</value>
+                <value>query</value>
+                <value>sql</value>
+                <value>sql-pass-through</value>
+                <value>value-list</value>
+                <value>table-fields</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="form-properties">
+    <element name="form:properties">
+        <oneOrMore>
+            <ref name="form-property"/>
+        </oneOrMore>
+    </element>
+</define>
+<define name="form-property" combine="choice">
+    <element name="form:property">
+        <ref name="form-property-name"/>
+        <ref name="form-property-value-and-type-attlist"/>
+    </element>
+</define>
+<define name="form-property-name" combine="interleave">
+    <attribute name="form:property-name">
+        <ref name="string"/>
+    </attribute>
+</define>
+<define name="form-property-value-and-type-attlist" combine="interleave">
+    <choice>
+        <ref name="common-value-and-type-attlist"/>
+        <attribute name="office:value-type">
+            <value>void</value>
+        </attribute>
+    </choice>
+</define>
+<define name="form-property" combine="choice">
+    <element name="form:list-property">
+        <ref name="form-property-name"/>
+        <ref name="form-property-type-and-value-list"/>
+    </element>
+</define>
+<define name="form-property-type-and-value-list">
+    <choice>
+        <group>
+            <attribute name="office:value-type">
+                <value>float</value>
+            </attribute>
+            <zeroOrMore>
+                <element name="form:list-value">
+                    <attribute name="office:value">
+                        <ref name="double"/>
+                    </attribute>
+                </element>
+            </zeroOrMore>
+        </group>
+        <group>
+            <attribute name="office:value-type">
+                <value>percentage</value>
+            </attribute>
+            <zeroOrMore>
+                <element name="form:list-value">
+                    <attribute name="office:value">
+                        <ref name="double"/>
+                    </attribute>
+                </element>
+            </zeroOrMore>
+        </group>
+        <group>
+            <attribute name="office:value-type">
+                <value>currency</value>
+            </attribute>
+            <zeroOrMore>
+                <element name="form:list-value">
+                    <attribute name="office:value">
+                        <ref name="double"/>
+                    </attribute>
+                    <optional>
+                        <attribute name="office:currency">
+                            <ref name="string"/>
+                        </attribute>
+                    </optional>
+                </element>
+            </zeroOrMore>
+        </group>
+        <group>
+            <attribute name="office:value-type">
+                <value>date</value>
+            </attribute>
+            <zeroOrMore>
+                <element name="form:list-value">
+                    <attribute name="office:date-value">
+                        <ref name="dateOrDateTime"/>
+                    </attribute>
+                </element>
+            </zeroOrMore>
+        </group>
+        <group>
+            <attribute name="office:value-type">
+                <value>time</value>
+            </attribute>
+            <zeroOrMore>
+                <element name="form:list-value">
+                    <attribute name="office:time-value">
+                        <ref name="duration"/>
+                    </attribute>
+                </element>
+            </zeroOrMore>
+        </group>
+        <group>
+            <attribute name="office:value-type">
+                <value>boolean</value>
+            </attribute>
+            <zeroOrMore>
+                <element name="form:list-value">
+                    <attribute name="office:boolean-value">
+                        <ref name="boolean"/>
+                    </attribute>
+                </element>
+            </zeroOrMore>
+        </group>
+        <group>
+            <attribute name="office:value-type">
+                <value>string</value>
+            </attribute>
+            <zeroOrMore>
+                <element name="form:list-value">
+                    <attribute name="office:string-value">
+                        <ref name="string"/>
+                    </attribute>
+                </element>
+            </zeroOrMore>
+        </group>
+        <attribute name="office:value-type">
+            <value>void</value>
+        </attribute>
+    </choice>
+</define>
+<define name="office-annotation">
+    <element name="office:annotation">
+        <ref name="office-annotation-attlist"/>
+        <ref name="draw-caption-attlist"/>
+        <ref name="common-draw-position-attlist"/>
+        <ref name="common-draw-size-attlist"/>
+        <ref name="common-draw-shape-with-text-and-styles-attlist"/>
+        <optional>
+            <ref name="dc-creator"/>
+        </optional>
+        <optional>
+            <ref name="dc-date"/>
+        </optional>
+        <optional>
+            <ref name="meta-date-string"/>
+        </optional>
+        <zeroOrMore>
+            <choice>
+                <ref name="text-p"/>
+                <ref name="text-list"/>
+            </choice>
+        </zeroOrMore>
+    </element>
+</define>
+<define name="office-annotation-attlist" combine="interleave">
+    <optional>
+        <attribute name="office:display">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="meta-date-string">
+    <element name="meta:date-string">
+        <ref name="string"/>
+    </element>
+</define>
+<define name="common-num-format-prefix-suffix-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:num-prefix">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="style:num-suffix">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-num-format-attlist" combine="interleave">
+    <choice>
+        <attribute name="style:num-format">
+            <choice>
+                <value>1</value>
+                <value>i</value>
+                <value>I</value>
+                <ref name="string"/>
+                <empty/>
+            </choice>
+        </attribute>
+        <group>
+            <attribute name="style:num-format">
+                <choice>
+                    <value>a</value>
+                    <value>A</value>
+                </choice>
+            </attribute>
+            <ref name="style-num-letter-sync-attlist"/>
+        </group>
+        <empty/>
+    </choice>
+</define>
+<define name="style-num-letter-sync-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:num-letter-sync">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="office-change-info">
+    <element name="office:change-info">
+        <ref name="dc-creator"/>
+        <ref name="dc-date"/>
+        <zeroOrMore>
+            <ref name="text-p"/>
+        </zeroOrMore>
+    </element>
+</define>
+<define name="office-event-listeners">
+    <element name="office:event-listeners">
+        <zeroOrMore>
+            <choice>
+                <ref name="script-event-listener"/>
+                <ref name="presentation-event-listener"/>
+            </choice>
+        </zeroOrMore>
+    </element>
+</define>
+<define name="script-event-listener" combine="interleave">
+    <element name="script:event-listener">
+        <ref name="script-event-listener-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="script-event-listener-attlist" combine="interleave">
+    <attribute name="script:event-name">
+        <ref name="string"/>
+    </attribute>
+</define>
+<define name="script-event-listener-attlist" combine="interleave">
+    <attribute name="script:language">
+        <ref name="string"/>
+    </attribute>
+</define>
+<define name="script-event-listener-attlist" combine="interleave">
+    <choice>
+        <attribute name="script:macro-name">
+            <ref name="string"/>
+        </attribute>
+        <group>
+            <attribute name="xlink:href">
+                <ref name="anyURI"/>
+            </attribute>
+            <optional>
+                <attribute name="xlink:type" a:defaultValue="simple">
+                    <value>simple</value>
+                </attribute>
+            </optional>
+            <optional>
+                <attribute name="xlink:actuate" a:defaultValue="onRequest">
+                    <value>onRequest</value>
+                </attribute>
+            </optional>
+        </group>
+    </choice>
+</define>
+<define name="math-math">
+    <element name="math:math">
+        <ref name="mathMarkup"/>
+    </element>
+</define>
+
+<!-- To avoid inclusion of the complete MathML schema, anything -->
+<!-- is allowed within a math:math top-level element            -->
+<define name="mathMarkup">
+    <zeroOrMore>
+        <choice>
+            <attribute>
+                <anyName/>
+            </attribute>
+            <text/>
+            <element>
+                <anyName/>
+                <ref name="mathMarkup"/>
+            </element>
+        </choice>
+    </zeroOrMore>
+</define>
+<define name="text-dde-connection-decl">
+    <element name="text:dde-connection-decl">
+        <ref name="text-dde-connection-decl-attlist"/>
+        <ref name="common-dde-connection-decl-attlist"/>
+    </element>
+</define>
+<define name="text-dde-connection-decl-attlist" combine="interleave">
+    <attribute name="office:name">
+        <ref name="string"/>
+    </attribute>
+</define>
+<define name="common-dde-connection-decl-attlist" combine="interleave">
+    <attribute name="office:dde-application">
+        <ref name="string"/>
+    </attribute>
+</define>
+<define name="common-dde-connection-decl-attlist" combine="interleave">
+    <attribute name="office:dde-topic">
+        <ref name="string"/>
+    </attribute>
+</define>
+<define name="common-dde-connection-decl-attlist" combine="interleave">
+    <attribute name="office:dde-item">
+        <ref name="string"/>
+    </attribute>
+</define>
+<define name="common-dde-connection-decl-attlist" combine="interleave">
+    <optional>
+        <attribute name="office:automatic-update" a:defaultValue="true">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-dde-link">
+    <element name="table:dde-link">
+        <ref name="office-dde-source"/>
+        <ref name="table-table"/>
+    </element>
+</define>
+<define name="office-dde-source">
+    <element name="office:dde-source">
+        <ref name="office-dde-source-attlist"/>
+        <ref name="common-dde-connection-decl-attlist"/>
+    </element>
+</define>
+<define name="office-dde-source-attlist" combine="interleave">
+    <optional>
+        <attribute name="office:name">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="office-dde-source-attlist" combine="interleave">
+    <optional>
+        <attribute name="office:conversion-mode" 
+                    a:defaultValue="into-default-style-data-style">
+            <choice>
+                <value>into-default-style-data-style</value>
+                <value>into-english-number</value>
+                <value>keep-text</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="animation-element" combine="choice">
+    <element name="anim:animate">
+        <ref name="common-anim-target-attlist"/>
+        <ref name="common-anim-named-target-attlist"/>
+        <ref name="common-anim-values-attlist"/>
+        <ref name="common-anim-spline-mode-attlist"/>
+        <ref name="common-spline-anim-value-attlist"/>
+        <ref name="common-timing-attlist"/>
+        <ref name="common-anim-add-accum-attlist"/>
+    </element>
+</define>
+<define name="animation-element" combine="choice">
+    <element name="anim:set">
+        <ref name="common-anim-target-attlist"/>
+        <ref name="common-anim-named-target-attlist"/>
+        <ref name="common-anim-set-values-attlist"/>
+        <ref name="common-timing-attlist"/>
+        <ref name="common-anim-add-accum-attlist"/>
+    </element>
+</define>
+<define name="animation-element" combine="choice">
+    <element name="anim:animateMotion">
+        <ref name="anim-animate-motion-attlist"/>
+        <ref name="common-anim-target-attlist"/>
+        <ref name="common-anim-named-target-attlist"/>
+        <ref name="common-anim-add-accum-attlist"/>
+        <ref name="common-anim-values-attlist"/>
+        <ref name="common-timing-attlist"/>
+        <ref name="common-spline-anim-value-attlist"/>
+    </element>
+</define>
+<define name="anim-animate-motion-attlist" combine="interleave">
+    <optional>
+        <attribute name="svg:path">
+            <ref name="pathData"/>
+        </attribute>
+    </optional>
+</define>
+<define name="anim-animate-motion-attlist" combine="interleave">
+    <optional>
+        <attribute name="svg:origin">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="anim-animate-motion-attlist" combine="interleave">
+    <optional>
+        <attribute name="smil:calcMode" a:defaultValue="paced">   
+            <choice>
+                <value>discrete</value>
+                <value>linear</value>
+                <value>paced</value>
+                <value>spline</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="animation-element" combine="choice">
+    <element name="anim:animateColor">
+        <ref name="common-anim-target-attlist"/>
+        <ref name="common-anim-named-target-attlist"/>
+        <ref name="common-anim-add-accum-attlist"/>
+        <ref name="common-anim-values-attlist"/>
+        <ref name="common-anim-spline-mode-attlist"/>
+        <ref name="common-spline-anim-value-attlist"/>
+        <ref name="anim-animate-color-attlist"/>
+        <ref name="common-timing-attlist"/>
+    </element>
+</define>
+<define name="anim-animate-color-attlist" combine="interleave">
+    <optional>
+        <attribute name="anim:color-interpolation" a:defaultValue="rgb">
+            <choice>
+                <value>rgb</value>
+                <value>hsl</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="anim-animate-color-attlist" combine="interleave">
+    <optional>
+        <attribute name="anim:color-interpolation-direction"     
+                                   a:defaultValue="clockwise">
+            <choice>
+                <value>clockwise</value>
+                <value>counter-clockwise</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="animation-element" combine="choice">
+    <element name="anim:animateTransform">
+        <ref name="common-anim-target-attlist"/>
+        <ref name="common-anim-named-target-attlist"/>
+        <ref name="common-anim-add-accum-attlist"/>
+        <ref name="common-anim-values-attlist"/>
+        <ref name="anim-animate-transform-attlist"/>
+        <ref name="common-timing-attlist"/>
+    </element>
+</define>
+<define name="anim-animate-transform-attlist" combine="interleave">
+    <attribute name="svg:type">
+        <choice>
+            <value>translate</value>
+            <value>scale</value>
+            <value>rotate</value>
+            <value>skewX</value>
+            <value>skewY</value> 
+        </choice>
+    </attribute>
+</define>
+<define name="animation-element" combine="choice">
+    <element name="anim:transitionFilter">
+        <ref name="common-anim-target-attlist"/>
+        <ref name="common-anim-add-accum-attlist"/>
+        <ref name="common-anim-values-attlist"/>
+        <ref name="common-anim-spline-mode-attlist "/>
+        <ref name="anim-transition-filter-attlist"/>
+        <ref name="common-timing-attlist"/>
+    </element>
+</define>
+<define name="anim-transition-filter-attlist" combine="interleave">
+    <attribute name="smil:type">
+        <ref name="string"/>
+    </attribute>
+</define>
+<define name="anim-transition-filter-attlist" combine="interleave">
+    <optional>
+        <attribute name="smil:subtype">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="anim-transition-filter-attlist" combine="interleave">
+    <optional>
+        <attribute name="smil:direction" a:defaultValue="forward">
+            <choice>
+                <value>forward</value>
+                <value>reverse</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="anim-transition-filter-attlist" combine="interleave">
+    <optional>
+        <attribute name="smil:fadeColor">
+            <choice>
+                <value>forward</value>
+                <value>reverse</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="anim-transition-filter-attlist" combine="interleave">
+    <optional>
+        <attribute name="smil:mode" a:defaultValue="in">
+            <choice>
+                <value>in</value>
+                <value>out</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="common-anim-attlist" combine="interleave">
+    <optional>
+        <attribute name="anim:id">
+            <ref name="ID"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-anim-target-attlist" combine="interleave">
+    <optional>
+        <attribute name="smil:targetElement">
+            <ref name="IDREF"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-anim-named-target-attlist" combine="interleave">
+    <attribute name="smil:attributeName">
+        <ref name="string"/>
+    </attribute>
+</define>
+<define name="common-anim-target-attlist" combine="interleave">
+    <optional>
+        <attribute name="anim:sub-item">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-anim-values-attlist" combine="interleave">
+    <optional>
+        <attribute name="smil:values">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-anim-spline-mode-attlist" combine="interleave">
+    <optional>
+        <attribute name="smil:calcMode" a:defaultValue="discrete">   
+            <choice>
+                <value>discrete</value>
+                <value>linear</value>
+                <value>paced</value>
+                <value>spline</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="common-spline-anim-value-attlist" combine="interleave">
+    <optional>
+        <attribute name="smil:keyTimes">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-spline-anim-value-attlist" combine="interleave">
+    <optional>
+        <attribute name="smil:keySplines">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-anim-add-accum-attlist" combine="interleave">
+    <optional>
+        <attribute name="smil:accumulate">
+            <choice>
+                <value>none</value>
+                <value>sum</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="common-anim-add-accum-attlist" combine="interleave">
+    <optional>
+        <attribute name="smil:additive">
+            <choice>
+                <value>replace</value>
+                <value>sum</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="common-anim-values-attlist" combine="interleave">
+    <optional>
+        <attribute name="anim:formula">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-anim-set-values-attlist" combine="interleave">
+    <optional>
+        <attribute name="smil:to">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+
+<define name="common-anim-values-attlist" combine="interleave">
+    <ref name="common-anim-set-values-attlist"/>
+    <optional>
+        <attribute name="smil:from">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="smil:by">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-begin-end-timing-attlist" combine="interleave">
+    <optional>
+        <attribute name="smil:begin">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-begin-end-timing-attlist" combine="interleave">
+    <optional>
+        <attribute name="smil:end">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-dur-timing-attlist" combine="interleave">
+    <optional>
+        <attribute name="smil:dur">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-endsync-timing-attlist" combine="interleave">
+    <optional>
+        <attribute name="smil:endsync">
+            <choice>
+                <value>first</value>
+                <value>last</value>
+                <value>all</value>
+                <value>media</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="common-repeat-timing-attlist" combine="interleave">
+    <optional>
+        <attribute name="smil:repeatDur">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="smil:repeatCount">
+            <choice>
+                <ref name="nonNegativeInteger"/>
+                <value>indefinite</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="common-fill-timing-attlist" combine="interleave">
+    <optional>
+        <attribute name="smil:fill">
+            <choice>
+                <value>remove</value>
+                <value>freeze</value>
+                <value>hold</value>
+                <value>auto</value>
+                <value>default</value>
+                <value>transition</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="common-fill-default-attlist" combine="interleave">
+    <optional>
+        <attribute name="smil:fillDefault">
+            <choice>
+                <value>remove</value>
+                <value>freeze</value>
+                <value>hold</value>
+                <value>transition</value>
+                <value>auto</value>
+                <value>inherit</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="common-restart-timing-attlist" combine="interleave">
+    <optional>
+        <attribute name="smil:restart" a:defaultValue="default">
+            <choice>
+                <value>never</value>
+                <value>always</value>
+                <value>whenNotActive</value>
+                <value>default</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="common-restart-default-attlist" combine="interleave">
+    <optional>
+        <attribute name="smil:restartDefault" a:defaultValue="inherit">
+            <choice>
+                <value>never</value>
+                <value>always</value>
+                <value>whenNotActive</value>
+                <value>inherit</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="common-time-manip-attlist" combine="interleave">
+    <optional>    
+        <attribute name="smil:accelerate" a:defaultValue="0.0">
+            <ref name="double"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-time-manip-attlist" combine="interleave">
+    <optional>
+        <attribute name="smil:decelerate" a:defaultValue="0.0">
+            <ref name="double"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-time-manip-attlist" combine="interleave">
+    <optional>
+        <attribute name="smil:autoReverse" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="animation-element" combine="choice">
+    <element name="anim:par">
+        <ref name="common-anim-attlist"/>
+        <ref name="common-timing-attlist"/>
+        <ref name="common-endsync-timing-attlist"/>
+        <zeroOrMore>
+            <ref name="animation-element"/>
+        </zeroOrMore>
+    </element>
+</define>
+
+<define name="common-basic-timing-attlist" combine="interleave">
+   <ref name="common-begin-end-timing-attlist"/>
+   <ref name="common-dur-timing-attlist"/>
+   <ref name="common-repeat-timing-attlist"/>
+</define>
+
+<define name="common-timing-attlist" combine="interleave">
+   <ref name="common-basic-timing-attlist"/>
+   <ref name="common-restart-timing-attlist"/>
+   <ref name="common-restart-default-attlist"/>
+   <ref name="common-fill-timing-attlist"/>
+   <ref name="common-fill-default-attlist"/>
+   <ref name="common-time-manip-attlist"/>
+</define>
+<define name="animation-element" combine="choice">
+    <element name="anim:seq">
+        <ref name="common-anim-attlist"/>
+        <ref name="common-endsync-timing-attlist"/>
+        <ref name="common-timing-attlist"/>
+        <zeroOrMore>
+            <ref name="animation-element"/>
+        </zeroOrMore>
+    </element>
+</define>
+<define name="animation-element" combine="choice">
+    <element name="anim:iterate">
+        <ref name="common-anim-attlist"/>
+        <ref name="anim-iterate-attlist"/>
+        <ref name="common-timing-attlist"/>
+        <ref name="common-endsync-timing-attlist"/>
+        <zeroOrMore>
+            <ref name="animation-element"/>
+        </zeroOrMore>
+    </element>
+</define>
+<define name="anim-iterate-attlist" combine="interleave">
+    <ref name="common-anim-target-attlist"/>
+</define>
+<define name="anim-iterate-attlist" combine="interleave">
+    <optional>
+        <attribute name="anim:iterate-type">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="anim-iterate-attlist" combine="interleave">
+    <optional>
+        <attribute name="anim:iterate-interval">
+            <ref name="duration"/>
+        </attribute>
+    </optional>
+</define>
+<define name="animation-element" combine="choice">
+    <element name="anim:audio">
+        <ref name="common-anim-attlist"/>
+        <ref name="anim-audio-attlist"/>
+        <ref name="common-basic-timing-attlist"/>
+    </element>
+</define>
+<define name="anim-audio-attlist" combine="interleave">
+    <optional>
+        <attribute name="xlink:href">
+            <ref name="anyURI"/>
+        </attribute>
+    </optional>
+</define>
+<define name="anim-audio-attlist" combine="interleave">
+    <optional>
+        <attribute name="anim:audio-level">
+            <ref name="double"/>
+        </attribute>
+    </optional>
+</define>
+<define name="animation-element" combine="choice">
+    <element name="anim:command">
+        <ref name="common-anim-attlist"/>
+        <ref name="anim-command-attlist"/>
+        <ref name="common-begin-end-timing-attlist"/>
+        <ref name="common-anim-target-attlist"/>
+        <zeroOrMore>
+            <element name="anim:param">
+                <attribute name="anim:name"/>
+                <attribute name="anim:value"/>
+            </element>
+        </zeroOrMore>
+    </element>
+</define>
+<define name="anim-command-attlist" combine="interleave">
+    <attribute name="anim:command">
+        <ref name="string"/>
+    </attribute>
+</define>
+<define name="style-style">
+    <element name="style:style">
+        <ref name="style-style-attlist"/>
+        <ref name="style-style-content"/>
+        <zeroOrMore>
+            <ref name="style-map"/>
+        </zeroOrMore>
+    </element>
+</define>
+<define name="style-style-attlist" combine="interleave">
+    <attribute name="style:name">
+        <ref name="styleName"/>
+    </attribute>
+</define>
+<define name="style-style-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:display-name">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-style-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:parent-style-name">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-style-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:next-style-name">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-style-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:list-style-name">
+            <choice>
+                <ref name="styleName"/>
+                <empty/>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-style-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:master-page-name">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-style-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:auto-update" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-style-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:data-style-name">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-style-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:class">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-style-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:default-outline-level">
+            <ref name="positiveInteger"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-map">
+    <element name="style:map">
+        <ref name="style-map-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="style-map-attlist" combine="interleave">
+    <attribute name="style:condition">
+        <ref name="string"/>
+    </attribute>
+</define>
+<define name="style-map-attlist" combine="interleave">
+    <attribute name="style:apply-style-name">
+        <ref name="styleNameRef"/>
+    </attribute>
+</define>
+<define name="style-map-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:base-cell-address">
+            <ref name="cellAddress"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-default-style">
+    <element name="style:default-style">
+        <ref name="style-style-content"/>
+    </element>
+</define>
+<define name="style-page-layout">
+    <element name="style:page-layout">
+        <ref name="style-page-layout-attlist"/>
+        <optional>
+            <ref name="style-page-layout-properties"/>
+        </optional>
+        <optional>
+            <ref name="style-header-style"/>
+        </optional>
+        <optional>
+            <ref name="style-footer-style"/>
+        </optional>
+    </element>
+</define>
+<define name="style-page-layout-attlist" combine="interleave">
+    <attribute name="style:name">
+        <ref name="styleName"/>
+    </attribute>
+</define>
+<define name="style-page-layout-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:page-usage" a:defaultValue="all">
+            <choice>
+                <value>all</value>
+                <value>left</value>
+                <value>right</value>
+                <value>mirrored</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-header-style">
+    <element name="style:header-style">
+        <optional>
+            <ref name="style-header-footer-properties"/>
+        </optional>
+    </element>
+</define>
+<define name="style-footer-style">
+    <element name="style:footer-style">
+        <optional>
+            <ref name="style-header-footer-properties"/>
+        </optional>
+    </element>
+</define>
+<define name="style-master-page">
+    <element name="style:master-page">
+        <ref name="style-master-page-attlist"/>
+        <optional>
+            <ref name="style-header"/>
+            <optional>
+                <ref name="style-header-left"/>
+            </optional>
+        </optional>
+        <optional>
+            <ref name="style-footer"/>
+            <optional>
+                <ref name="style-footer-left"/>
+            </optional>
+        </optional>
+        <optional>
+            <ref name="office-forms"/>
+        </optional>
+        <zeroOrMore>
+            <ref name="style-style"/>
+        </zeroOrMore>
+        <zeroOrMore>
+            <ref name="shape"/>
+        </zeroOrMore>
+        <optional>
+            <ref name="presentation-notes"/>
+        </optional>
+    </element>
+</define>
+<define name="style-master-page-attlist" combine="interleave">
+    <attribute name="style:name">
+        <ref name="styleName"/>
+    </attribute>
+</define>
+<define name="style-master-page-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:display-name">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-master-page-attlist" combine="interleave">
+    <attribute name="style:page-layout-name">
+        <ref name="styleNameRef"/>
+    </attribute>
+</define>
+<define name="style-master-page-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:style-name">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-master-page-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:next-style-name">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-header">
+    <element name="style:header">
+        <ref name="common-style-header-footer-attlist"/>
+        <ref name="header-footer-content"/>
+    </element>
+</define>
+<define name="style-footer">
+    <element name="style:footer">
+        <ref name="common-style-header-footer-attlist"/>
+        <ref name="header-footer-content"/>
+    </element>
+</define>
+<define name="style-header-left">
+    <element name="style:header-left">
+        <ref name="common-style-header-footer-attlist"/>
+        <ref name="header-footer-content"/>
+    </element>
+</define>
+<define name="style-footer-left">
+    <element name="style:footer-left">
+        <ref name="common-style-header-footer-attlist"/>
+        <ref name="header-footer-content"/>
+    </element>
+</define>
+<define name="header-footer-content">
+    <choice>
+        <group>
+            <ref name="text-tracked-changes"/>
+            <ref name="text-decls"/>
+            <zeroOrMore>
+                <choice>
+                    <ref name="text-h"/>
+                    <ref name="text-p"/>
+                    <ref name="text-list"/>
+                    <ref name="table-table"/>
+                    <ref name="text-section"/>
+                    <ref name="text-table-of-content"/>
+                    <ref name="text-illustration-index"/>
+                    <ref name="text-table-index"/>
+                    <ref name="text-object-index"/>
+                    <ref name="text-user-index"/>
+                    <ref name="text-alphabetical-index"/>
+                    <ref name="text-bibliography"/>
+                    <ref name="text-index-title"/>
+                    <ref name="change-marks"/>
+                </choice>
+            </zeroOrMore>
+        </group>
+        <group>
+            <optional>
+                <ref name="style-region-left"/>
+            </optional>
+            <optional>
+                <ref name="style-region-center"/>
+            </optional>
+            <optional>
+                <ref name="style-region-right"/>
+            </optional>
+        </group>
+    </choice>
+</define>
+<define name="common-style-header-footer-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:display" a:defaultValue="true">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-region-left">
+    <element name="style:region-left">
+        <ref name="region-content"/>
+    </element>
+</define>
+<define name="style-region-center">
+    <element name="style:region-center">
+        <ref name="region-content"/>
+    </element>
+</define>
+<define name="style-region-right">
+    <element name="style:region-right">
+        <ref name="region-content"/>
+    </element>
+</define>
+
+<define name="region-content">
+    <zeroOrMore>
+        <ref name="text-p"/>
+    </zeroOrMore>
+</define>
+<define name="presentation-notes">
+    <element name="presentation:notes">
+        <ref name="common-presentation-header-footer-attlist"/>
+        <ref name="presentation-notes-attlist"/>
+        <ref name="office-forms"/>
+        <zeroOrMore>
+            <ref name="shape"/>
+        </zeroOrMore>
+    </element>
+</define>
+<define name="presentation-notes-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:page-layout-name">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+<define name="presentation-notes-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:style-name">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-table-template">
+    <element name="table:table-template">
+        <ref name="table-table-template-attlist"/>
+        <optional>
+            <ref name="table-first-row"/>
+        </optional>
+        <optional>
+            <ref name="table-last-row"/>
+        </optional>
+        <optional>
+            <ref name="table-first-column"/>
+        </optional>
+        <optional>
+            <ref name="table-last-column"/>
+        </optional>
+        <choice>
+            <ref name="table-body"/>
+            <group>
+                <ref name="table-even-rows"/>
+                <ref name="table-odd-rows"/>
+            </group>
+            <group>
+                <ref name="table-even-columns"/>
+                <ref name="table-odd-columns"/>
+            </group>
+        </choice>
+    </element>
+</define>
+<define name="table-table-template-attlist" combine="interleave">
+    <attribute name="text:name">
+        <ref name="string"/>
+    </attribute>
+</define>
+<define name="table-table-template-attlist" combine="interleave">
+    <attribute name="text:first-row-start-column">
+        <ref name="rowOrCol"/>
+    </attribute>
+</define>
+
+<define name="table-table-template-attlist" combine="interleave">
+    <attribute name="text:first-row-end-column">
+        <ref name="rowOrCol"/>
+    </attribute>
+</define>
+
+<define name="table-table-template-attlist" combine="interleave">
+    <attribute name="text:last-row-start-column">
+        <ref name="rowOrCol"/>
+    </attribute>
+</define>
+
+<define name="table-table-template-attlist" combine="interleave">
+    <attribute name="text:last-row-end-column">
+        <ref name="rowOrCol"/>
+    </attribute>
+</define>
+
+<define name="rowOrCol">
+    <choice>
+        <value>row</value>
+        <value>column</value>
+    </choice>
+</define>
+<define name="table-first-row">
+    <element name="table:first-row">
+        <ref name="common-table-template-attlist"/>
+        <empty/>
+    </element>
+</define>
+
+<define name="table-last-row">
+    <element name="table:last-row">
+        <ref name="common-table-template-attlist"/>
+        <empty/>
+    </element>
+</define>
+
+<define name="table-first-column">
+    <element name="table:first-column">
+        <ref name="common-table-template-attlist"/>
+        <empty/>
+    </element>
+</define>
+
+<define name="table-last-column">
+    <element name="table:last-column">
+        <ref name="common-table-template-attlist"/>
+        <empty/>
+    </element>
+</define>
+
+<define name="table-body">
+    <element name="table:body">
+        <ref name="common-table-template-attlist"/>
+        <empty/>
+    </element>
+</define>
+
+<define name="table-even-rows">
+    <element name="table:even-rows">
+        <ref name="common-table-template-attlist"/>
+        <empty/>
+    </element>
+</define>
+
+<define name="table-odd-rows">
+    <element name="table:odd-rows">
+        <ref name="common-table-template-attlist"/>
+        <empty/>
+    </element>
+</define>
+
+<define name="table-even-columns">
+    <element name="table:even-columns">
+        <ref name="common-table-template-attlist"/>
+        <empty/>
+    </element>
+</define>
+
+<define name="table-odd-columns">
+    <element name="table:odd-columns">
+        <ref name="common-table-template-attlist"/>
+        <empty/>
+    </element>
+</define>
+
+<define name="common-table-template-attlist" combine="interleave">
+    <attribute name="text:style-name">
+        <ref name="styleNameRef"/>
+    </attribute>
+    <attribute name="text:paragraph-style-name">
+        <optional>
+            <ref name="styleNameRef"/>
+        </optional>
+    </attribute>
+</define>
+<define name="style-font-face">
+    <element name="style:font-face">
+        <ref name="style-font-face-attlist"/>
+        <optional>
+            <ref name="svg-font-face-src"/>
+        </optional>
+        <optional>
+            <ref name="svg-definition-src"/>
+        </optional>
+    </element>
+</define>
+<define name="style-font-face-attlist" combine="interleave">
+    <optional>
+        <attribute name="svg:font-family">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="svg:font-style">
+            <ref name="fontStyle"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="svg:font-variant">
+            <ref name="fontVariant"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="svg:font-weight">
+            <ref name="fontWeight"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="svg:font-stretch">
+            <choice>
+                <value>normal</value>
+                <value>ultra-condensed</value>
+                <value>extra-condensed</value>
+                <value>condensed</value>
+                <value>semi-condensed</value>
+                <value>semi-expanded</value>
+                <value>expanded</value>
+                <value>extra-expanded</value>
+                <value>ultra-expanded</value>
+            </choice>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="svg:font-size">
+            <ref name="positiveLength"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="svg:unicode-range"/>
+    </optional>
+    <optional>
+        <attribute name="svg:units-per-em">
+            <ref name="integer"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="svg:panose-1"/>
+    </optional>
+    <optional>
+        <attribute name="svg:stemv">
+            <ref name="integer"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="svg:stemh">
+            <ref name="integer"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="svg:slope">
+            <ref name="integer"/>
+        </attribute>
+        </optional>
+    <optional>
+        <attribute name="svg:cap-height">
+            <ref name="integer"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="svg:x-height">
+            <ref name="integer"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="svg:accent-height">
+            <ref name="integer"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="svg:ascent">
+            <ref name="integer"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="svg:descent">
+            <ref name="integer"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="svg:widths"/>
+    </optional>
+    <optional>
+        <attribute name="svg:bbox"/>
+    </optional>
+    <optional>
+        <attribute name="svg:ideographic">
+            <ref name="integer"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="svg:alphabetic">
+            <ref name="integer"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="svg:mathematical">
+            <ref name="integer"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="svg:hanging">
+            <ref name="integer"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="svg:v-ideographic">
+            <ref name="integer"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="svg:v-alphabetic">
+            <ref name="integer"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="svg:v-mathematical">
+            <ref name="integer"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="svg:v-hanging">
+            <ref name="integer"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="svg:underline-position">
+            <ref name="integer"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="svg:underline-thickness">
+            <ref name="integer"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="svg:strikethrough-position">
+            <ref name="integer"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="svg:strikethrough-thickness">
+            <ref name="integer"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="svg:overline-position">
+            <ref name="integer"/>
+        </attribute>
+        </optional>
+    <optional>
+        <attribute name="svg:overline-thickness">
+            <ref name="integer"/>
+        </attribute>
+    </optional>
+</define>
+
+<define name="svg-font-face-src">
+    <element name="svg:font-face-src">
+        <oneOrMore>
+            <choice>
+                <ref name="svg-font-face-uri"/>
+                <ref name="svg-font-face-name"/>
+            </choice>
+        </oneOrMore>
+    </element>
+</define>
+
+<define name="svg-font-face-uri">
+    <element name="svg:font-face-uri">
+        <ref name="common-svg-font-face-xlink-attlist"/>
+        <zeroOrMore>
+            <ref name="svg-font-face-format"/>
+        </zeroOrMore>
+    </element>
+</define>
+
+<define name="svg-font-face-format">
+    <element name="svg:font-face-format">
+        <optional>
+            <attribute name="svg:string"/>
+        </optional>
+        <empty/>
+    </element>
+</define>
+<define name="svg-font-face-name">
+    <element name="svg:font-face-name">
+        <optional>
+            <attribute name="svg:name"/>
+        </optional>
+        <empty/>
+    </element>
+</define>
+
+<define name="svg-definition-src">
+    <element name="svg:definition-src">
+        <ref name="common-svg-font-face-xlink-attlist"/>
+    <empty/>
+    </element>
+</define>
+
+<define name="common-svg-font-face-xlink-attlist" combine="interleave">
+    <attribute name="xlink:href">
+        <ref name="anyURI"/>
+    </attribute>
+    <optional>
+        <attribute name="xlink:type" a:defaultValue="simple">
+            <value>simple</value>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="xlink:actuate" a:defaultValue="onRequest">
+            <value>onRequest</value>
+        </attribute>
+    </optional>
+</define>
+<define name="style-font-face-attlist" combine="interleave">
+    <attribute name="style:name">
+        <ref name="string"/>
+    </attribute>
+</define>
+<define name="style-font-face-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:font-adornments">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-font-face-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:font-family-generic">
+            <ref name="fontFamilyGeneric"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-font-face-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:font-pitch">
+            <ref name="fontPitch"/>
+        </attribute>
+    </optional>
+</define>
+
+<define name="style-font-face-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:font-charset">
+            <ref name="textEncoding"/>
+        </attribute>
+    </optional>
+</define>
+<define name="number-number-style">
+    <element name="number:number-style">
+        <ref name="common-data-style-attlist"/>
+        <optional>
+            <ref name="style-text-properties"/>
+        </optional>
+        <optional>
+            <ref name="number-text"/>
+        </optional>
+        <optional>
+            <ref name="any-number"/>
+            <optional>
+                <ref name="number-text"/>
+            </optional>
+        </optional>
+        <zeroOrMore>
+            <ref name="style-map"/>
+        </zeroOrMore>
+    </element>
+</define>
+
+<define name="any-number">
+    <choice>
+        <ref name="number-number"/>
+        <ref name="number-scientific-number"/>
+        <ref name="number-fraction"/>
+    </choice>
+</define>
+<define name="number-number">
+    <element name="number:number">
+        <ref name="number-number-attlist"/>
+        <ref name="common-decimal-places-attlist"/>
+        <ref name="common-number-attlist"/>
+        <zeroOrMore>
+            <ref name="number-embedded-text"/>
+        </zeroOrMore>
+    </element>
+</define>
+<define name="number-number-attlist" combine="interleave">
+    <optional>
+        <attribute name="number:decimal-replacement"/>
+    </optional>
+</define>
+<define name="number-number-attlist" combine="interleave">
+    <optional>
+        <attribute name="number:display-factor" a:defaultValue="1">
+            <ref name="double"/>
+        </attribute>
+    </optional>
+</define>
+<define name="number-embedded-text">
+    <element name="number:embedded-text">
+        <ref name="number-embedded-text-attlist"/>
+        <text/>
+    </element>
+</define>
+<define name="number-embedded-text-attlist" combine="interleave">
+    <attribute name="number:position">
+        <ref name="integer"/>
+    </attribute>
+</define>
+<define name="number-scientific-number">
+    <element name="number:scientific-number">
+        <ref name="number-scientific-number-attlist"/>
+        <ref name="common-decimal-places-attlist"/>
+        <ref name="common-number-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="number-scientific-number-attlist" combine="interleave">
+    <optional>
+        <attribute name="number:min-exponent-digits">
+            <ref name="integer"/>
+        </attribute>
+    </optional>
+</define>
+<define name="number-fraction">
+    <element name="number:fraction">
+        <ref name="number-fraction-attlist"/>
+        <ref name="common-number-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="number-fraction-attlist" combine="interleave">
+    <optional>
+        <attribute name="number:min-numerator-digits">
+            <ref name="integer"/>
+        </attribute>
+    </optional>
+</define>
+<define name="number-fraction-attlist" combine="interleave">
+    <optional>
+        <attribute name="number:min-denominator-digits">
+            <ref name="integer"/>
+        </attribute>
+    </optional>
+</define>
+<define name="number-fraction-attlist" combine="interleave">
+    <optional>
+        <attribute name="number:denominator-value">
+            <ref name="integer"/>
+        </attribute>
+    </optional>
+</define>
+<define name="number-currency-style">
+    <element name="number:currency-style">
+        <ref name="common-data-style-attlist"/>
+        <ref name="common-auto-reorder-attlist"/>
+        <optional>
+            <ref name="style-text-properties"/>
+        </optional>
+        <optional>
+            <ref name="number-text"/>
+        </optional>
+        <optional>
+            <choice>
+                <group>
+                    <ref name="number-and-text"/>
+                    <optional>
+                        <ref name="currency-symbol-and-text"/>
+                    </optional>
+                </group>
+                <group>
+                    <ref name="currency-symbol-and-text"/>
+                    <optional>
+                        <ref name="number-and-text"/>
+                    </optional>
+                </group>
+            </choice>
+        </optional>
+        <zeroOrMore>
+            <ref name="style-map"/>
+        </zeroOrMore>
+    </element>
+</define>
+
+<define name="currency-symbol-and-text">
+    <ref name="number-currency-symbol"/>
+    <optional>
+        <ref name="number-text"/>
+    </optional>
+</define>
+<define name="number-and-text">
+    <ref name="number-number"/>
+    <optional>
+        <ref name="number-text"/>
+    </optional>
+</define>
+<define name="number-currency-symbol">
+    <element name="number:currency-symbol">
+        <ref name="number-currency-symbol-attlist"/>
+        <text/>
+    </element>
+</define>
+<define name="number-currency-symbol-attlist" combine="interleave">
+    <optional>
+        <attribute name="number:language">
+            <ref name="languageCode"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="number:country">
+            <ref name="countryCode"/>
+        </attribute>
+    </optional>
+</define>
+<define name="number-percentage-style">
+    <element name="number:percentage-style">
+        <ref name="common-data-style-attlist"/>
+        <optional>
+            <ref name="style-text-properties"/>
+        </optional>
+        <optional>
+            <ref name="number-text"/>
+        </optional>
+        <optional>
+            <ref name="number-and-text"/>
+        </optional>
+        <zeroOrMore>
+            <ref name="style-map"/>
+        </zeroOrMore>
+    </element>
+</define>
+<define name="number-date-style">
+    <element name="number:date-style">
+        <ref name="common-data-style-attlist"/>
+        <ref name="common-auto-reorder-attlist"/>
+        <ref name="common-format-source-attlist"/>
+        <optional>
+            <ref name="style-text-properties"/>
+        </optional>
+        <!-- This DTD does not reflect the fact that some elements must not -->
+        <!-- occur more than once. -->
+        <optional>
+            <ref name="number-text"/>
+        </optional>
+        <oneOrMore>
+            <ref name="any-date"/>
+            <optional>
+                <ref name="number-text"/>
+            </optional>
+        </oneOrMore>
+        <zeroOrMore>
+            <ref name="style-map"/>
+        </zeroOrMore>
+    </element>
+</define>
+
+<define name="any-date">
+    <choice>
+        <ref name="number-day"/>
+        <ref name="number-month"/>
+        <ref name="number-year"/>
+        <ref name="number-era"/>
+        <ref name="number-day-of-week"/>
+        <ref name="number-week-of-year"/>
+        <ref name="number-quarter"/>
+        <ref name="number-hours"/>
+        <ref name="number-am-pm"/>
+        <ref name="number-minutes"/>
+        <ref name="number-seconds"/>
+    </choice>
+</define>
+<define name="number-day">
+    <element name="number:day">
+        <ref name="number-day-attlist"/>
+        <ref name="common-calendar-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="number-day-attlist" combine="interleave">
+    <optional>
+        <attribute name="number:style" a:defaultValue="short">
+            <choice>
+                <value>short</value>
+                <value>long</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="number-month">
+    <element name="number:month">
+        <ref name="number-month-attlist"/>
+        <ref name="common-calendar-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="number-month-attlist" combine="interleave">
+    <optional>
+        <attribute name="number:textual" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="number-month-attlist" combine="interleave">
+    <optional>
+        <attribute name="number:possessive-form" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="number-month-attlist" combine="interleave">
+    <optional>
+        <attribute name="number:style" a:defaultValue="short">
+            <choice>
+                <value>short</value>
+                <value>long</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="number-year">
+    <element name="number:year">
+        <ref name="number-year-attlist"/>
+        <ref name="common-calendar-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="number-year-attlist" combine="interleave">
+    <optional>
+        <attribute name="number:style" a:defaultValue="short">
+            <choice>
+                <value>short</value>
+                <value>long</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="number-era">
+    <element name="number:era">
+        <ref name="number-era-attlist"/>
+        <ref name="common-calendar-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="number-era-attlist" combine="interleave">
+    <optional>
+        <attribute name="number:style" a:defaultValue="short">
+            <choice>
+                <value>short</value>
+                <value>long</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="number-day-of-week">
+    <element name="number:day-of-week">
+        <ref name="number-day-of-week-attlist"/>
+        <ref name="common-calendar-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="number-day-of-week-attlist" combine="interleave">
+    <optional>
+        <attribute name="number:style" a:defaultValue="short">
+            <choice>
+                <value>short</value>
+                <value>long</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="number-week-of-year">
+    <element name="number:week-of-year">
+        <ref name="common-calendar-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="number-quarter">
+    <element name="number:quarter">
+        <ref name="number-quarter-attlist"/>
+        <ref name="common-calendar-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="number-quarter-attlist" combine="interleave">
+    <optional>
+        <attribute name="number:style" a:defaultValue="short">
+            <choice>
+                <value>short</value>
+                <value>long</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="number-time-style">
+    <element name="number:time-style">
+        <ref name="number-time-style-attlist"/>
+        <ref name="common-data-style-attlist"/>
+        <ref name="common-format-source-attlist"/>
+        <optional>
+            <ref name="style-text-properties"/>
+        </optional>
+        <!-- This DTD does not reflect the fact that some elements must not -->
+        <!-- occur more than once. -->
+        <optional>
+            <ref name="number-text"/>
+        </optional>
+        <oneOrMore>
+            <ref name="any-time"/>
+            <optional>
+                <ref name="number-text"/>
+            </optional>
+        </oneOrMore>
+        <zeroOrMore>
+            <ref name="style-map"/>
+        </zeroOrMore>
+    </element>
+</define>
+
+<define name="any-time">
+    <choice>
+        <ref name="number-hours"/>
+        <ref name="number-am-pm"/>
+        <ref name="number-minutes"/>
+        <ref name="number-seconds"/>
+    </choice>
+</define>
+<define name="number-time-style-attlist" combine="interleave">
+    <optional>
+        <attribute name="number:truncate-on-overflow" a:defaultValue="true">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="number-hours">
+    <element name="number:hours">
+        <ref name="number-hours-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="number-hours-attlist" combine="interleave">
+    <optional>
+        <attribute name="number:style" a:defaultValue="short">
+            <choice>
+                <value>short</value>
+                <value>long</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="number-minutes">
+    <element name="number:minutes">
+        <ref name="number-minutes-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="number-minutes-attlist" combine="interleave">
+    <optional>
+        <attribute name="number:style" a:defaultValue="short">
+            <choice>
+                <value>short</value>
+                <value>long</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="number-seconds">
+    <element name="number:seconds">
+        <ref name="number-seconds-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="number-seconds-attlist" combine="interleave">
+    <optional>
+        <attribute name="number:style" a:defaultValue="short">
+            <choice>
+                <value>short</value>
+                <value>long</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="number-seconds-attlist" combine="interleave">
+    <optional>
+        <attribute name="number:decimal-places" a:defaultValue="0">
+            <ref name="integer"/>
+        </attribute>
+    </optional>
+</define>
+<define name="number-am-pm">
+    <element name="number:am-pm">
+        <empty/>
+    </element>
+</define>
+<define name="number-boolean-style">
+    <element name="number:boolean-style">
+        <ref name="common-data-style-attlist"/>
+        <optional>
+            <ref name="style-text-properties"/>
+        </optional>
+        <optional>
+            <ref name="number-text"/>
+        </optional>
+        <optional>
+            <ref name="number-boolean"/>
+            <optional>
+                <ref name="number-text"/>
+            </optional>
+        </optional>
+        <zeroOrMore>
+            <ref name="style-map"/>
+        </zeroOrMore>
+    </element>
+</define>
+<define name="number-boolean">
+    <element name="number:boolean">
+        <empty/>
+    </element>
+</define>
+<define name="number-text-style">
+    <element name="number:text-style">
+        <ref name="common-data-style-attlist"/>
+        <optional>
+            <ref name="style-text-properties"/>
+        </optional>
+        <optional>
+            <ref name="number-text"/>
+        </optional>
+        <zeroOrMore>
+            <ref name="number-text-content"/>
+            <optional>
+                <ref name="number-text"/>
+            </optional>
+        </zeroOrMore>
+        <zeroOrMore>
+            <ref name="style-map"/>
+        </zeroOrMore>
+    </element>
+</define>
+<define name="number-text">
+    <element name="number:text">
+        <text/>
+    </element>
+</define>
+<define name="number-text-content">
+    <element name="number:text-content">
+        <empty/>
+    </element>
+</define>
+<define name="common-data-style-attlist" combine="interleave">
+    <attribute name="style:name">
+        <ref name="styleName"/>
+    </attribute>
+</define>
+<define name="style-data-style-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:display-name">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-data-style-attlist" combine="interleave">
+    <optional>
+        <attribute name="number:language">
+            <ref name="languageCode"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-data-style-attlist" combine="interleave">
+    <optional>
+        <attribute name="number:country">
+            <ref name="countryCode"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-data-style-attlist" combine="interleave">
+    <optional>
+        <attribute name="number:title"/>
+    </optional>
+</define>
+<define name="common-data-style-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:volatile">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-auto-reorder-attlist" combine="interleave">
+    <optional>
+        <attribute name="number:automatic-order" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-format-source-attlist">
+    <optional>
+        <attribute name="number:format-source" a:defaultValue="fixed">
+            <choice>
+                <value>fixed</value>
+                <value>language</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="common-data-style-attlist" combine="interleave">
+    <optional>
+        <attribute name="number:transliteration-format" a:defaultValue="1">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-data-style-attlist" combine="interleave">
+    <optional>
+        <attribute name="number:transliteration-language">
+            <ref name="countryCode"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-data-style-attlist" combine="interleave">
+    <optional>
+        <attribute name="number:transliteration-country">
+            <ref name="countryCode"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-data-style-attlist" combine="interleave">
+    <optional>
+        <attribute name="number:transliteration-style" a:defaultValue="short">
+            <choice>
+                <value>short</value>
+                <value>medium</value>
+                <value>long</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="common-decimal-places-attlist">
+    <optional>
+        <attribute name="number:decimal-places">
+            <ref name="integer"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-number-attlist" combine="interleave">
+    <optional>
+        <attribute name="number:min-integer-digits">
+            <ref name="integer"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-number-attlist" combine="interleave">
+    <optional>
+        <attribute name="number:grouping" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-calendar-attlist" combine="interleave">
+    <optional>
+        <attribute name="number:calendar">
+            <choice>
+                <value>gregorian</value>
+                <value>gengou</value>
+                <value>ROC</value>
+                <value>hanja_yoil</value>
+                <value>hanja</value>
+                <value>hijri</value>
+                <value>jewish</value>
+                <value>buddhist</value>
+                <ref name="string"/>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-style-content" combine="choice">
+    <group>
+        <attribute name="style:family">
+            <value>text</value>
+        </attribute>
+        <optional>
+            <ref name="style-text-properties"/>
+        </optional>
+    </group>
+</define>
+<define name="style-style-content" combine="choice">
+    <group>
+        <attribute name="style:family">
+            <value>paragraph</value>
+        </attribute>
+        <optional>
+            <ref name="style-paragraph-properties"/>
+        </optional>
+        <optional>
+            <ref name="style-text-properties"/>
+        </optional>
+    </group>
+</define>
+<define name="style-style-content" combine="choice">
+    <group>
+        <attribute name="style:family">
+            <value>section</value>
+        </attribute>
+        <optional>
+            <ref name="style-section-properties"/>
+        </optional>
+    </group>
+</define>
+<define name="style-style-content" combine="choice">
+    <group>
+        <attribute name="style:family">
+            <value>ruby</value>
+        </attribute>
+        <optional>
+            <ref name="style-ruby-properties"/>
+        </optional>
+    </group>
+</define>
+<define name="text-linenumbering-configuration">
+    <element name="text:linenumbering-configuration">
+        <ref name="text-linenumbering-configuration-attlist"/>
+        <optional>
+            <ref name="text-linenumbering-separator"/>
+        </optional>
+    </element>
+</define>
+<define name="text-linenumbering-configuration-attlist" combine="interleave">
+    <optional>
+        <attribute name="text:number-lines" a:defaultValue="true">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-linenumbering-configuration-attlist" combine="interleave">
+    <optional>
+        <ref name="common-num-format-attlist"/>
+    </optional>
+</define>
+<define name="text-linenumbering-configuration-attlist" combine="interleave">
+    <optional>
+        <attribute name="text:style-name">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-linenumbering-configuration-attlist" combine="interleave">
+    <optional>
+        <attribute name="text:increment">
+            <ref name="nonNegativeInteger"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-linenumbering-configuration-attlist" combine="interleave">
+    <optional>
+        <attribute name="text:number-position" a:defaultValue="left">
+            <choice>
+                <value>left</value>
+                <value>right</value>
+                <value>inner</value>
+                <value>outer</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="text-linenumbering-configuration-attlist" combine="interleave">
+    <optional>
+        <attribute name="text:offset">
+            <ref name="nonNegativeLength"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-linenumbering-configuration-attlist" combine="interleave">
+    <optional>
+        <attribute name="text:count-empty-lines" a:defaultValue="true">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-linenumbering-configuration-attlist" combine="interleave">
+    <optional>
+        <attribute name="text:count-in-text-boxes" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-linenumbering-configuration-attlist" combine="interleave">
+    <optional>
+        <attribute name="text:restart-on-page" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-linenumbering-separator">
+    <element name="text:linenumbering-separator">
+        <optional>
+            <attribute name="text:increment">
+                <ref name="nonNegativeInteger"/>
+            </attribute>
+        </optional>
+        <text/>
+    </element>
+</define>
+<define name="text-notes-configuration">
+    <element name="text:notes-configuration">
+        <ref name="text-notes-configuration-content"/>
+    </element>
+</define>
+<define name="text-notes-configuration-content" combine="interleave">
+    <ref name="text-note-class"/>
+</define>
+<define name="text-notes-configuration-content" combine="interleave">
+    <optional>
+        <attribute name="text:citation-style-name">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-notes-configuration-content" combine="interleave">
+    <optional>
+        <attribute name="text:citation-body-style-name">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-notes-configuration-content" combine="interleave">
+    <optional>
+        <attribute name="text:default-style-name">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-notes-configuration-content" combine="interleave">
+    <optional>
+        <attribute name="text:master-page-name">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-notes-configuration-content" combine="interleave">
+    <optional>
+        <attribute name="text:start-value">
+            <ref name="nonNegativeInteger"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-notes-configuration-content" combine="interleave">
+    <ref name="common-num-format-prefix-suffix-attlist"/>
+    <optional>
+        <ref name="common-num-format-attlist"/>
+    </optional>
+</define>
+<define name="text-notes-configuration-content" combine="interleave">
+    <optional>
+        <attribute name="text:start-numbering-at">
+            <choice>
+                <value>document</value>
+                <value>chapter</value>
+                <value>page</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="text-notes-configuration-content" combine="interleave">
+    <optional>
+        <attribute name="text:footnotes-position">
+            <choice>
+                <value>text</value>
+                <value>page</value>
+                <value>section</value>
+                <value>document</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="text-notes-configuration-content" combine="interleave">
+    <optional>
+        <element name="text:note-continuation-notice-forward">
+            <text/>
+        </element>
+    </optional>
+</define>
+<define name="text-notes-configuration-content" combine="interleave">
+    <optional>
+        <element name="text:note-continuation-notice-backward">
+            <text/>
+        </element>
+    </optional>
+</define>
+<define name="text-bibliography-configuration">
+    <element name="text:bibliography-configuration">
+        <ref name="text-bibliography-configuration-attlist"/>
+        <zeroOrMore>
+            <ref name="text-sort-key"/>
+        </zeroOrMore>
+    </element>
+</define>
+<define name="text-bibliography-configuration-attlist" combine="interleave">
+    <optional>
+        <attribute name="text:prefix">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="text:suffix">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-bibliography-configuration-attlist" combine="interleave">
+    <optional>
+        <attribute name="text:numbered-entries" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-bibliography-configuration-attlist" combine="interleave">
+    <optional>
+        <attribute name="text:sort-by-position" a:defaultValue="true">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="fo:language">
+            <ref name="languageCode"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="fo:country">
+            <ref name="countryCode"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="text:sort-algorithm">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-sort-key">
+    <element name="text:sort-key">
+        <ref name="text-sort-key-attlist"/>
+        <empty/>
+    </element>
+</define>
+
+<define name="text-sort-key-attlist" combine="interleave">
+    <attribute name="text:key">
+        <choice>
+            <value>address</value>
+            <value>annote</value>
+            <value>author</value>
+            <value>bibliography-type</value>
+            <value>booktitle</value>
+            <value>chapter</value>
+            <value>custom1</value>
+            <value>custom2</value>
+            <value>custom3</value>
+            <value>custom4</value>
+            <value>custom5</value>
+            <value>edition</value>
+            <value>editor</value>
+            <value>howpublished</value>
+            <value>identifier</value>
+            <value>institution</value>
+            <value>isbn</value>
+            <value>issn</value>
+            <value>journal</value>
+            <value>month</value>
+            <value>note</value>
+            <value>number</value>
+            <value>organizations</value>
+            <value>pages</value>
+            <value>publisher</value>
+            <value>report-type</value>
+            <value>school</value>
+            <value>series</value>
+            <value>title</value>
+            <value>url</value>
+            <value>volume</value>
+            <value>year</value>
+        </choice>
+    </attribute>
+    <optional>
+        <attribute name="text:sort-ascending" a:defaultValue="true">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-list-style">
+    <element name="text:list-style">
+        <ref name="text-list-style-attr"/>
+        <zeroOrMore>
+            <ref name="text-list-style-content"/>
+        </zeroOrMore>
+    </element>
+</define>
+<define name="text-list-style-attr" combine="interleave">
+    <attribute name="style:name">
+        <ref name="styleName"/>
+    </attribute>
+</define>
+<define name="text-list-style-attr" combine="interleave">
+    <optional>
+        <attribute name="style:display-name">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-list-style-attr" combine="interleave">
+    <optional>
+        <attribute name="text:consecutive-numbering" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-list-level-style-attr">
+    <attribute name="text:level">
+        <ref name="positiveInteger"/>
+    </attribute>
+</define>
+<define name="text-list-style-content" combine="choice">
+    <element name="text:list-level-style-number">
+        <ref name="text-list-level-style-attr"/>
+        <ref name="text-list-level-style-number-attr"/>
+        <optional>
+            <ref name="style-list-level-properties"/>
+        </optional>
+        <optional>
+            <ref name="style-text-properties"/>
+        </optional>
+    </element>
+</define>
+<define name="text-list-level-style-number-attr" combine="interleave">
+    <optional>
+        <attribute name="text:style-name">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-list-level-style-number-attr" combine="interleave">
+    <ref name="common-num-format-attlist"/>
+    <ref name="common-num-format-prefix-suffix-attlist"/>
+</define>
+<define name="text-list-level-style-number-attr" combine="interleave">
+    <optional>
+        <attribute name="text:display-levels" a:defaultValue="1">
+            <ref name="positiveInteger"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-list-level-style-number-attr" combine="interleave">
+    <optional>
+        <attribute name="text:start-value" a:defaultValue="1">
+            <ref name="positiveInteger"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-list-style-content" combine="choice">
+    <element name="text:list-level-style-bullet">
+        <ref name="text-list-level-style-attr"/>
+        <ref name="text-list-level-style-bullet-attr"/>
+        <optional>
+            <ref name="style-list-level-properties"/>
+        </optional>
+        <optional>
+            <ref name="style-text-properties"/>
+        </optional>
+    </element>
+</define>
+<define name="text-list-level-style-bullet-attr" combine="interleave">
+    <optional>
+        <attribute name="text:style-name">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-list-level-style-bullet-attr" combine="interleave">
+    <attribute name="text:bullet-char">
+        <ref name="character"/>
+    </attribute>
+</define>
+<define name="text-list-level-style-bullet-attr" combine="interleave">
+    <ref name="common-num-format-prefix-suffix-attlist"/>
+</define>
+<define name="text-list-level-style-bullet-attr" combine="interleave">
+    <optional>
+        <attribute name="text:bullet-relative-size">
+            <ref name="percent"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-list-style-content" combine="choice">
+    <element name="text:list-level-style-image">
+        <ref name="text-list-level-style-attr"/>
+        <ref name="text-list-level-style-image-attr"/>
+        <optional>
+            <ref name="style-list-level-properties"/>
+        </optional>
+    </element>
+</define>
+<define name="text-list-level-style-image-attr" combine="interleave">
+    <choice>
+        <ref name="common-draw-data-attlist"/>
+        <ref name="office-binary-data"/>
+    </choice>
+</define>
+<define name="text-outline-style">
+    <element name="text:outline-style">
+        <oneOrMore>
+            <ref name="text-outline-level-style"/>
+        </oneOrMore>
+    </element>
+</define>
+<define name="text-outline-level-style">
+    <element name="text:outline-level-style">
+        <ref name="text-outline-level-style-attlist"/>
+        <optional>
+            <ref name="style-list-level-properties"/>
+        </optional>
+        <optional>
+            <ref name="style-text-properties"/>
+        </optional>
+    </element>
+</define>
+<define name="text-outline-level-style-attlist" combine="interleave">
+    <attribute name="text:level">
+        <ref name="positiveInteger"/>
+    </attribute>
+</define>
+<define name="text-outline-level-style-attlist" combine="interleave">
+    <optional>
+        <attribute name="text:style-name">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-outline-level-style-attlist" combine="interleave">
+    <ref name="common-num-format-attlist"/>
+    <ref name="common-num-format-prefix-suffix-attlist"/>
+</define>
+<define name="text-outline-level-style-attlist" combine="interleave">
+    <optional>
+        <attribute name="text:display-levels" a:defaultValue="1">
+            <ref name="positiveInteger"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-outline-level-style-attlist" combine="interleave">
+    <optional>
+        <attribute name="text:start-value" a:defaultValue="1">
+            <ref name="positiveInteger"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-style-content" combine="choice">
+    <group>
+        <attribute name="style:family">
+            <value>table</value>
+        </attribute>
+        <optional>
+            <ref name="style-table-properties"/>
+        </optional>
+    </group>
+</define>
+<define name="style-style-content" combine="choice">
+    <group>
+        <attribute name="style:family">
+            <value>table-column</value>
+        </attribute>
+        <optional>
+            <ref name="style-table-column-properties"/>
+        </optional>
+    </group>
+</define>
+<define name="style-style-content" combine="choice">
+    <group>
+        <attribute name="style:family">
+            <value>table-row</value>
+        </attribute>
+        <optional>
+            <ref name="style-table-row-properties"/>
+        </optional>
+    </group>
+</define>
+<define name="style-style-content" combine="choice">
+    <group>
+        <attribute name="style:family">
+            <value>table-cell</value>
+        </attribute>
+        <optional>
+            <ref name="style-table-cell-properties"/>
+        </optional>
+        <optional>
+            <ref name="style-paragraph-properties"/>
+        </optional>
+        <optional>
+            <ref name="style-text-properties"/>
+        </optional>
+    </group>
+</define>
+<define name="style-style-content" combine="choice">
+    <group>
+        <attribute name="style:family">
+            <choice>
+                <value>graphic</value>
+                <value>presentation</value>
+            </choice>
+        </attribute>
+        <optional>
+            <ref name="style-graphic-properties"/>
+        </optional>
+        <optional>
+            <ref name="style-paragraph-properties"/>
+        </optional>
+        <optional>
+            <ref name="style-text-properties"/>
+        </optional>
+    </group>
+</define>
+
+<define name="style-graphic-properties">
+    <element name="style:graphic-properties">
+        <ref name="style-graphic-properties-content"/>
+    </element>
+</define>
+
+<define name="style-graphic-properties-content">
+    <ref name="style-properties-content"/>
+</define>
+
+<define name="style-graphic-properties-content-strict">
+    <ref name="style-graphic-properties-attlist"/>
+    <ref name="style-graphic-fill-properties-attlist"/>
+    <ref name="style-graphic-properties-elements"/>
+</define>
+
+<define name=" style-graphic-properties-elements">
+    <empty/>
+</define>
+<define name="style-style-content" combine="choice">
+    <group>
+        <attribute name="style:family">
+            <value>drawing-page</value>
+        </attribute>
+        <optional>
+            <ref name="style-drawing-page-properties"/>
+        </optional>
+    </group>
+</define>
+
+<define name="style-drawing-page-properties">
+    <element name="style:drawing-page-properties">
+        <ref name="style-drawing-page-properties-content"/>
+    </element>
+</define>
+
+<define name="style-drawing-page-properties-content">
+    <ref name="style-properties-content"/>
+</define>
+
+<define name="style-drawing-page-properties-content-strict">
+    <ref name="style-graphic-fill-properties-attlist"/>
+    <ref name="style-drawing-page-properties-attlist"/>
+    <ref name="style-drawing-page-properties-elements"/>
+</define>
+<define name="draw-gradient">
+    <element name="draw:gradient">
+        <ref name="common-draw-gradient-attlist"/>
+        <ref name="draw-gradient-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="common-draw-gradient-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:name">
+            <ref name="styleName"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-draw-gradient-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:display-name">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-draw-gradient-attlist" combine="interleave">
+    <attribute name="draw:style">
+        <ref name="gradient-style"/>
+    </attribute>
+</define>
+<define name="gradient-style">
+    <choice>
+        <value>linear</value>
+        <value>axial</value>
+        <value>radial</value>
+        <value>ellipsoid</value>
+        <value>square</value>
+        <value>rectangular</value>
+    </choice>
+</define>
+<define name="common-draw-gradient-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:cx">
+            <ref name="percent"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="draw:cy">
+            <ref name="percent"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-gradient-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:start-color">
+            <ref name="color"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="draw:end-color">
+            <ref name="color"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-gradient-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:start-intensity">
+            <ref name="percent"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="draw:end-intensity">
+            <ref name="percent"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-draw-gradient-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:angle">
+            <ref name="integer"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-draw-gradient-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:border">
+            <ref name="percent"/>
+        </attribute>
+    </optional>
+</define>
+<define name="svg-linearGradient">
+    <element name="svg:linearGradient">
+        <ref name="common-svg-gradient-attlist"/>
+        <optional>
+            <attribute name="svg:x1" a:defaultValue="0%">
+                <choice>
+                    <ref name="coordinate"/>
+                    <ref name="percent"/>
+                </choice>                
+            </attribute>
+        </optional>
+        <optional>
+            <attribute name="svg:y1" a:defaultValue="0%">
+                <choice>
+                    <ref name="coordinate"/>
+                    <ref name="percent"/>
+                </choice>                
+            </attribute>
+        </optional>
+        <optional>
+            <attribute name="svg:x2" a:defaultValue="100%">
+                <choice>
+                    <ref name="coordinate"/>
+                    <ref name="percent"/>
+                </choice>                
+            </attribute>
+        </optional>
+        <optional>
+            <attribute name="svg:y2" a:defaultValue="100%">
+                <choice>
+                    <ref name="coordinate"/>
+                    <ref name="percent"/>
+                </choice>                
+            </attribute>
+        </optional>
+        <zeroOrMore>
+            <ref name="svg-stop"/>
+        </zeroOrMore>
+    </element>
+</define>
+
+<define name="svg-radialGradient">
+    <element name="svg:radialGradient">
+        <ref name="common-svg-gradient-attlist"/>
+        <optional>
+            <attribute name="svg:cx" a:defaultValue="50%">
+                <choice>
+                    <ref name="coordinate"/>
+                    <ref name="percent"/>
+                </choice>                
+            </attribute>
+        </optional>
+        <optional>
+            <attribute name="svg:cy" a:defaultValue="50%">
+                <choice>
+                    <ref name="coordinate"/>
+                    <ref name="percent"/>
+                </choice>                
+            </attribute>
+        </optional>
+        <optional>
+            <attribute name="svg:r" a:defaultValue="50%">
+                <choice>
+                    <ref name="coordinate"/>
+                    <ref name="percent"/>
+                </choice>                
+            </attribute>
+        </optional>
+        <optional>
+            <attribute name="svg:fx">
+                <choice>
+                    <ref name="coordinate"/>
+                    <ref name="percent"/>
+                </choice>                
+            </attribute>
+        </optional>
+        <optional>
+            <attribute name="svg:fy">
+                <choice>
+                    <ref name="coordinate"/>
+                    <ref name="percent"/>
+                </choice>                
+            </attribute>
+        </optional>
+        <zeroOrMore>
+            <ref name="svg-stop"/>
+        </zeroOrMore>
+    </element>
+</define>
+
+<define name="svg-stop">
+    <element name="svg:stop">
+        <attribute name="svg:offset">
+            <choice>
+                <ref name="double"/>
+                <ref name="percent"/>
+            </choice>
+        </attribute>
+        <optional>
+            <attribute name="svg:stop-color">
+                <ref name="color"/>
+            </attribute>
+        </optional>
+        <optional>
+            <attribute name="svg:stop-opacity">
+                <ref name="double"/>
+            </attribute>
+        </optional>
+    </element>
+</define>
+
+<define name="common-svg-gradient-attlist" combine="interleave">
+    <optional>
+        <attribute name="svg:gradientUnits" a:defaultValue="objectBoundingBox">
+            <value>objectBoundingBox</value>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="svg:gradientTransform">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="svg:spreadMethod" a:defaultValue="pad">
+            <choice>
+                <value>pad</value>
+                <value>reflect</value>
+                <value>repeat</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="common-svg-gradient-attlist" combine="interleave">
+    <attribute name="draw:name">
+        <ref name="styleName"/>
+    </attribute>
+</define>
+<define name="common-svg-gradient-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:display-name">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-hatch">
+    <element name="draw:hatch">
+        <ref name="draw-hatch-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="draw-hatch-attlist" combine="interleave">
+    <attribute name="draw:name">
+        <ref name="styleName"/>
+    </attribute>
+</define>
+<define name="draw-hatch-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:display-name">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-hatch-attlist" combine="interleave">
+    <attribute name="draw:style">
+        <choice>
+            <value>single</value>
+            <value>double</value>
+            <value>triple</value>
+        </choice>
+    </attribute>
+</define>
+<define name="draw-hatch-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:color">
+            <ref name="color"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-hatch-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:distance">
+            <ref name="length"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-hatch-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:rotation">
+            <ref name="integer"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-fill-image">
+    <element name="draw:fill-image">
+        <ref name="draw-fill-image-attlist"/>
+        <attribute name="xlink:href">
+            <ref name="anyURI"/>
+        </attribute>
+        <optional>
+            <attribute name="xlink:type" a:defaultValue="simple">
+                <choice>
+                    <value>simple</value>
+                </choice>
+            </attribute>
+        </optional>
+        <optional>
+            <attribute name="xlink:show" a:defaultValue="embed">
+                <choice>
+                    <value>embed</value>
+                </choice>
+            </attribute>
+        </optional>
+        <optional>
+            <attribute name="xlink:actuate" a:defaultValue="onLoad">
+                <choice>
+                    <value>onLoad</value>
+                </choice>
+            </attribute>
+        </optional>
+        <empty/>
+    </element>
+</define>
+<define name="draw-fill-image-attlist" combine="interleave">
+    <attribute name="draw:name">
+        <ref name="styleName"/>
+    </attribute>
+</define>
+<define name="draw-fill-image-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:display-name">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-fill-image-attlist" combine="interleave">
+    <optional>
+        <attribute name="svg:width">
+            <ref name="length"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="svg:height">
+            <ref name="length"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-opacity">
+    <element name="draw:opacity">
+        <ref name="common-draw-gradient-attlist"/>
+        <ref name="draw-opacity-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="draw-opacity-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:start">
+            <ref name="percent"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="draw:end">
+            <ref name="percent"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-marker">
+    <element name="draw:marker">
+        <ref name="draw-marker-attlist"/>
+        <ref name="common-draw-viewbox-attlist"/>
+        <ref name="common-draw-path-data-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="draw-marker-attlist" combine="interleave">
+    <attribute name="draw:name">
+        <ref name="styleName"/>
+    </attribute>
+</define>
+<define name="draw-marker-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:display-name">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-stroke-dash">
+    <element name="draw:stroke-dash">
+        <ref name="draw-stroke-dash-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="draw-stroke-dash-attlist" combine="interleave">
+    <attribute name="draw:name">
+        <ref name="styleName"/>
+    </attribute>
+</define>
+<define name="draw-stroke-dash-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:display-name">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-stroke-dash-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:style">
+            <choice>
+                <value>rect</value>
+                <value>round</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-stroke-dash-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:dots1">
+            <ref name="integer"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="draw:dots1-length">
+            <ref name="length"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="draw:dots2">
+            <ref name="integer"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="draw:dots2-length">
+            <ref name="length"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-stroke-dash-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:distance">
+            <ref name="length"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-presentation-page-layout">
+    <element name="style:presentation-page-layout">
+        <attribute name="style:name">
+            <ref name="styleName"/>
+        </attribute>
+        <optional>
+            <attribute name="style:display-name">
+                <ref name="string"/>
+            </attribute>
+        </optional>
+        <zeroOrMore>
+            <ref name="presentation-placeholder"/>
+        </zeroOrMore>
+    </element>
+</define>
+<define name="presentation-placeholder">
+    <element name="presentation:placeholder">
+        <attribute name="presentation:object">
+            <ref name="presentation-classes"/>
+        </attribute>
+        <attribute name="svg:x">
+            <choice>
+                <ref name="coordinate"/>
+                <ref name="percent"/>
+            </choice>
+        </attribute>
+        <attribute name="svg:y">
+            <choice>
+                <ref name="coordinate"/>
+                <ref name="percent"/>
+            </choice>
+        </attribute>
+        <attribute name="svg:width">
+            <choice>
+                <ref name="length"/>
+                <ref name="percent"/>
+            </choice>
+        </attribute>
+        <attribute name="svg:height">
+            <choice>
+                <ref name="length"/>
+                <ref name="percent"/>
+            </choice>
+        </attribute>
+        <empty/>
+    </element>
+</define>
+<define name="style-style-content" combine="choice">
+    <group>
+        <attribute name="style:family">
+            <value>chart</value>
+        </attribute>
+        <optional>
+            <ref name="style-chart-properties"/>
+        </optional>
+        <optional>
+            <ref name="style-graphic-properties"/>
+        </optional>
+        <optional>
+            <ref name="style-paragraph-properties"/>
+        </optional>
+        <optional>
+            <ref name="style-text-properties"/>
+        </optional>
+    </group>
+</define>
+<define name="style-properties-content">
+    <ref name="anyAttListOrElements"/>
+</define>
+<define name="style-page-layout-properties">
+    <element name="style:page-layout-properties">
+        <ref name="style-page-layout-properties-content"/>
+    </element>
+</define>
+
+<define name="style-page-layout-properties-content">
+    <ref name="style-properties-content"/>
+</define>
+
+<define name="style-page-layout-properties-content-strict">
+    <ref name="style-page-layout-properties-attlist"/>
+    <ref name="style-page-layout-properties-elements"/>
+</define>
+<define name="style-page-layout-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="fo:page-width">
+            <ref name="length"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="fo:page-height">
+            <ref name="length"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-page-layout-properties-attlist" combine="interleave">
+    <optional>
+        <ref name="common-num-format-attlist"/>
+    </optional>
+    <ref name="common-num-format-prefix-suffix-attlist"/>
+</define>
+<define name="style-page-layout-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:paper-tray-name">
+            <choice>
+                <value>default</value>
+                <ref name="string"/>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-page-layout-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:print-orientation">
+            <choice>
+                <value>portrait</value>
+                <value>landscape</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-page-layout-properties-attlist" combine="interleave">
+    <ref name="common-horizontal-margin-attlist"/>
+    <ref name="common-vertical-margin-attlist"/>
+    <ref name="common-margin-attlist"/>
+</define>
+<define name="style-page-layout-properties-attlist" combine="interleave">
+    <ref name="common-border-attlist"/>
+</define>
+<define name="style-page-layout-properties-attlist" combine="interleave">
+    <ref name="common-border-line-width-attlist"/>
+</define>
+<define name="style-page-layout-properties-attlist" combine="interleave">
+    <ref name="common-padding-attlist"/>
+</define>
+<define name="style-page-layout-properties-attlist" combine="interleave">
+    <ref name="common-shadow-attlist"/>
+</define>
+<define name="style-page-layout-properties-attlist" combine="interleave">
+    <ref name="common-background-color-attlist"/>
+</define>
+<define name="style-page-layout-properties-elements" combine="interleave">
+    <ref name="style-background-image"/>
+</define>
+<define name="style-page-layout-properties-elements" combine="interleave">
+    <ref name="style-columns"/>
+</define>
+<define name="style-page-layout-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:register-truth-ref-style-name">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-page-layout-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:print">
+            <list>
+                <zeroOrMore>
+                    <choice>
+                        <value>headers</value>
+                        <value>grid</value>
+                        <value>annotations</value>
+                        <value>objects</value>
+                        <value>charts</value>
+                        <value>drawings</value>
+                        <value>formulas</value>
+                        <value>zero-values</value>
+                    </choice>
+                </zeroOrMore>
+            </list>
+        </attribute>
+    </optional>
+</define>
+<define name="style-page-layout-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:print-page-order">
+            <choice>
+                <value>ttb</value>
+                <value>ltr</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-page-layout-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:first-page-number">
+            <choice>
+                <ref name="positiveInteger"/>
+                <value>continue</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-page-layout-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:scale-to">
+            <ref name="percent"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="style:scale-to-pages">
+            <ref name="positiveInteger"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-page-layout-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:table-centering">
+            <choice>
+                <value>horizontal</value>
+                <value>vertical</value>
+                <value>both</value>
+                <value>none</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-page-layout-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:footnote-max-height">
+            <ref name="length"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-page-layout-properties-attlist" combine="interleave">
+    <ref name="common-writing-mode-attlist"/>
+</define>
+<define name="style-page-layout-properties-elements" combine="interleave">
+    <ref name="style-footnote-sep"/>
+</define>
+
+<define name="style-footnote-sep">
+    <optional>
+        <element name="style:footnote-sep">
+            <ref name="style-footnote-sep-attlist"/>
+            <empty/>
+        </element>
+    </optional>
+</define>
+<define name="style-footnote-sep-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:width">
+            <ref name="length"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="style:rel-width">
+            <ref name="percent"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="style:color">
+            <ref name="color"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="style:line-style">
+            <ref name="lineStyle"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="style:adjustment" a:defaultValue="left">
+            <choice>
+                <value>left</value>
+                <value>center</value>
+                <value>right</value>
+            </choice>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="style:distance-before-sep">
+            <ref name="length"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="style:distance-after-sep">
+            <ref name="length"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-page-layout-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:layout-grid-mode">
+            <choice>
+                <value>none</value>
+                <value>line</value>
+                <value>both</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-page-layout-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:layout-grid-base-height">
+            <ref name="length"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-page-layout-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:layout-grid-ruby-height">
+            <ref name="length"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-page-layout-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:layout-grid-lines">
+            <ref name="positiveInteger"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-page-layout-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:layout-grid-color">
+            <ref name="color"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-page-layout-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:layout-grid-ruby-below">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-page-layout-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:layout-grid-print">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-page-layout-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:layout-grid-display">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-header-footer-properties">
+    <element name="style:header-footer-properties">
+        <ref name="style-header-footer-properties-content"/>
+    </element>
+</define>
+
+<define name="style-header-footer-properties-content">
+    <ref name="style-properties-content"/>
+</define>
+
+<define name="style-header-footer-properties-content-strict">
+        <ref name="style-header-footer-properties-attlist"/>
+        <ref name="style-header-footer-properties-elements"/>
+</define>
+<define name="style-header-footer-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="svg:height">
+            <ref name="length"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="fo:min-height">
+            <ref name="length"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-header-footer-properties-attlist" combine="interleave">
+    <ref name="common-horizontal-margin-attlist"/>
+    <ref name="common-vertical-margin-attlist"/>
+    <ref name="common-margin-attlist"/>
+</define>
+<define name="style-header-footer-properties-attlist" combine="interleave">
+    <ref name="common-border-attlist"/>
+</define>
+<define name="style-header-footer-properties-attlist" combine="interleave">
+    <ref name="common-border-line-width-attlist"/>
+</define>
+<define name="style-header-footer-properties-attlist" combine="interleave">
+    <ref name="common-padding-attlist"/>
+</define>
+<define name="style-header-footer-properties-attlist" combine="interleave">
+    <ref name="common-background-color-attlist"/>
+</define>
+<define name="style-header-footer-properties-elements" combine="interleave">
+    <ref name="style-background-image"/>
+</define>
+<define name="style-header-footer-properties-attlist" combine="interleave">
+    <ref name="common-shadow-attlist"/>
+</define>
+<define name="style-header-footer-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:dynamic-spacing">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-text-properties">
+    <element name="style:text-properties">
+        <ref name="style-text-properties-content"/>
+    </element>
+</define>
+
+<define name="style-text-properties-content">
+    <ref name="style-properties-content"/>
+</define>
+
+<define name="style-text-properties-content-strict">
+    <ref name="style-text-properties-attlist"/>
+    <ref name="style-text-properties-elements"/>
+</define>
+
+<define name="style-text-properties-elements">
+    <empty/>
+</define>
+<define name="style-text-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="fo:font-variant">
+            <ref name="fontVariant"/>
+        </attribute>
+    </optional>
+</define>
+
+<define name="fontVariant">
+    <choice>
+        <value>normal</value>
+        <value>small-caps</value>
+    </choice>
+</define>
+<define name="style-text-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="fo:text-transform">
+            <choice>
+                <value>none</value>
+                <value>lowercase</value>
+                <value>uppercase</value>
+                <value>capitalize</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-text-properties-attlist" combine="interleave">
+    <optional>
+            <attribute name="fo:color">
+            <ref name="color"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-text-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:use-window-font-color">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-text-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:text-outline">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-text-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:text-line-through-type">
+            <ref name="lineType"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-text-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:text-line-through-style">
+            <ref name="lineStyle"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-text-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:text-line-through-width">
+            <ref name="lineWidth"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-text-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:text-line-through-color">
+            <choice>
+                <value>font-color</value>
+                <ref name="color"/>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-text-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:text-line-through-text">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-text-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:text-line-through-text-style">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-text-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:text-position">
+            <list>
+                <choice>
+                    <ref name="percent"/>
+                    <value>super</value>
+                    <value>sub</value>
+                </choice>
+                <optional>
+                    <ref name="percent"/>
+                </optional>
+            </list>
+        </attribute>
+    </optional>
+</define>
+<define name="style-text-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:font-name">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="style:font-name-asian">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="style:font-name-complex">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-text-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="fo:font-family">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="style:font-family-asian">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="style:font-family-complex">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-text-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:font-family-generic">
+            <ref name="fontFamilyGeneric"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="style:font-family-generic-asian">
+            <ref name="fontFamilyGeneric"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="style:font-family-generic-complex">
+            <ref name="fontFamilyGeneric"/>
+        </attribute>
+    </optional>
+</define>
+
+<define name="fontFamilyGeneric">
+    <choice>
+        <value>roman</value>
+        <value>swiss</value>
+        <value>modern</value>
+        <value>decorative</value>
+        <value>script</value>
+        <value>system</value>
+    </choice>
+</define>
+<define name="style-text-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:font-style-name">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="style:font-style-name-asian">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="style:font-style-name-complex">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-text-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:font-pitch">
+            <ref name="fontPitch"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="style:font-pitch-asian">
+            <ref name="fontPitch"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="style:font-pitch-complex">
+            <ref name="fontPitch"/>
+        </attribute>
+    </optional>
+</define>
+
+<define name="fontPitch">
+    <choice>
+        <value>fixed</value>
+        <value>variable</value>
+    </choice>
+</define>
+<define name="style-text-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:font-charset">
+            <ref name="textEncoding"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="style:font-charset-asian">
+            <ref name="textEncoding"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="style:font-charset-complex">
+            <ref name="textEncoding"/>
+        </attribute>
+    </optional>
+</define>
+
+<define name="textEncoding">
+    <data type="string">
+        <param name="pattern">[A-Za-z][A-Za-z0-9._\-]*</param>
+    </data>
+</define>
+<define name="style-text-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="fo:font-size">
+            <choice>
+                <ref name="positiveLength"/>
+                <ref name="percent"/>
+            </choice>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="style:font-size-asian">
+            <choice>
+                <ref name="positiveLength"/>
+                <ref name="percent"/>
+            </choice>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="style:font-size-complex">
+            <choice>
+                <ref name="positiveLength"/>
+                <ref name="percent"/>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-text-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:font-size-rel">
+            <ref name="length"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="style:font-size-rel-asian">
+            <ref name="length"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="style:font-size-rel-complex">
+            <ref name="length"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-text-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:script-type">
+            <choice>
+                <value>latin</value>
+                <value>asian</value>
+                <value>complex</value>
+                <value>ignore</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-text-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="fo:letter-spacing">
+            <choice>
+                <ref name="length"/>
+                <value>normal</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-text-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="fo:language">
+            <ref name="languageCode"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="style:language-asian">
+            <ref name="languageCode"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="style:language-complex">
+            <ref name="languageCode"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-text-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="fo:country">
+            <ref name="countryCode"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="style:country-asian">
+            <ref name="countryCode"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="style:country-complex">
+            <ref name="countryCode"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-text-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="fo:font-style">
+            <ref name="fontStyle"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="style:font-style-asian">
+            <ref name="fontStyle"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="style:font-style-complex">
+            <ref name="fontStyle"/>
+        </attribute>
+    </optional>
+</define>
+
+<define name="fontStyle">
+    <choice>
+        <value>normal</value>
+        <value>italic</value>
+        <value>oblique</value>
+    </choice>
+</define>
+<define name="style-text-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:font-relief">
+            <choice>
+            <value>none</value>
+                <value>embossed</value>
+                <value>engraved</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-text-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="fo:text-shadow">
+            <ref name="shadowType"/>
+        </attribute>
+    </optional>
+</define>
+
+<define name="shadowType">
+    <choice>
+        <value>none</value>
+        <!-- The following string must match an XSL shadow decl -->
+        <ref name="string"/>
+    </choice>
+</define>
+<define name="style-text-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:text-underline-type">
+            <ref name="lineType"/>
+        </attribute>
+    </optional>
+</define>
+
+<define name="lineType">
+    <choice>
+        <value>none</value>
+        <value>single</value>
+        <value>double</value>
+    </choice>
+</define>
+<define name="style-text-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:text-underline-style">
+            <ref name="lineStyle"/>
+        </attribute>
+    </optional>
+</define>
+
+<define name="lineStyle">
+    <choice>
+        <value>none</value>
+        <value>solid</value>
+        <value>dotted</value>
+        <value>dash</value>
+        <value>long-dash</value>
+        <value>dot-dash</value>
+        <value>dot-dot-dash</value>
+        <value>wave</value>
+    </choice>
+</define>
+<define name="style-text-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:text-underline-width">
+            <ref name="lineWidth"/>
+        </attribute>
+    </optional>
+</define>
+
+<define name="lineWidth">
+    <choice>
+        <value>auto</value>
+        <value>normal</value>
+        <value>bold</value>
+        <value>thin</value>
+        <value>dash</value>
+        <value>medium</value>
+        <value>thick</value>
+        <ref name="positiveInteger"/>
+        <ref name="percent"/>
+        <ref name="positiveLength"/>
+    </choice>
+</define>
+<define name="style-text-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:text-underline-color">
+            <choice>
+                <value>font-color</value>
+                <ref name="color"/>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-text-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="fo:font-weight">
+            <ref name="fontWeight"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="style:font-weight-asian">
+            <ref name="fontWeight"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="style:font-weight-complex">
+            <ref name="fontWeight"/>
+        </attribute>
+    </optional>
+</define>
+
+<define name="fontWeight">
+    <choice>
+        <value>normal</value>
+        <value>bold</value>
+        <value>100</value>
+        <value>200</value>
+        <value>300</value>
+        <value>400</value>
+        <value>500</value>
+        <value>600</value>
+        <value>700</value>
+        <value>800</value>
+        <value>900</value>
+    </choice>
+</define>
+<define name="style-text-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:text-underline-mode">
+            <ref name="lineMode"/>
+        </attribute>
+    </optional>
+</define>
+
+<define name="lineMode">
+    <choice>
+        <value>continuous</value>
+        <value>skip-white-space</value>
+    </choice>
+</define>
+<define name="style-text-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:text-line-through-mode">
+            <ref name="lineMode"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-text-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:letter-kerning">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-text-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:text-blinking">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-text-properties-attlist" combine="interleave">
+    <ref name="common-background-color-attlist"/>
+</define>
+<define name="style-text-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:text-combine">
+            <choice>
+                <value>none</value>
+                <value>letters</value>
+                <value>lines</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-text-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:text-combine-start-char">
+            <ref name="character"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="style:text-combine-end-char">
+            <ref name="character"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-text-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:text-emphasize">
+            <choice>
+                <value>none</value>
+                <list>
+                    <choice>
+                        <value>none</value>
+                        <value>accent</value>
+                        <value>dot</value>
+                        <value>circle</value>
+                        <value>disc</value>
+                    </choice>
+                    <choice>
+                        <value>above</value>
+                        <value>below</value>
+                    </choice>
+                </list>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-text-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:text-scale">
+            <ref name="percent"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-text-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:text-rotation-angle">
+            <ref name="integer"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-text-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:text-rotation-scale">
+            <choice>
+                <value>fixed</value>
+                <value>line-height</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-text-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="fo:hyphenate">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-text-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="fo:hyphenation-remain-char-count">
+            <ref name="positiveInteger"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-text-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="fo:hyphenation-push-char-count">
+            <ref name="positiveInteger"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-text-properties-attlist" combine="interleave">
+    <choice>
+        <attribute name="text:display">
+            <value>true</value>
+        </attribute>
+        <attribute name="text:display">
+            <value>none</value>
+        </attribute>
+        <group>
+            <attribute name="text:display">
+                <value>condition</value>
+            </attribute>
+            <attribute name="text:condition">
+                <value>none</value>
+            </attribute>
+        </group>
+        <empty/>
+    </choice>
+</define>
+<define name="style-paragraph-properties">
+    <element name="style:paragraph-properties">
+        <ref name="style-paragraph-properties-content"/>
+    </element>
+</define>
+
+<define name="style-paragraph-properties-content">
+    <ref name="style-properties-content"/>
+</define>
+
+<define name="style-paragraph-properties-content-strict">
+    <ref name="style-paragraph-properties-attlist"/>
+    <ref name="style-paragraph-properties-elements"/>
+</define>
+<define name="style-paragraph-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="fo:line-height">
+            <choice>
+                <value>normal</value>
+                <ref name="nonNegativeLength"/>
+                <ref name="percent"/>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-paragraph-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:line-height-at-least">
+            <ref name="nonNegativeLength"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-paragraph-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:line-spacing">
+            <ref name="length"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-paragraph-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:font-independent-line-spacing">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-paragraph-properties-attlist" combine="interleave">
+    <ref name="common-text-align"/>
+</define>
+
+<define name="common-text-align">
+    <optional>
+        <attribute name="fo:text-align">
+            <choice>
+                <value>start</value>
+                <value>end</value>
+                <value>left</value>
+                <value>right</value>
+                <value>center</value>
+                <value>justify</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-paragraph-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="fo:text-align-last">
+            <choice>
+                <value>start</value>
+                <value>center</value>
+                <value>justify</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-paragraph-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:justify-single-word">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-paragraph-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="fo:keep-together">
+            <choice>
+                <value>auto</value>
+                <value>always</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-paragraph-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="fo:widows">
+            <ref name="nonNegativeInteger"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-paragraph-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="fo:orphans">
+            <ref name="nonNegativeInteger"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-paragraph-properties-elements" combine="interleave">
+    <ref name="style-tab-stops"/>
+</define>
+
+<define name="style-tab-stops">
+    <optional>
+        <element name="style:tab-stops">
+            <zeroOrMore>
+                <ref name="style-tab-stop"/>
+            </zeroOrMore>
+        </element>
+    </optional>
+</define>
+
+<define name="style-tab-stop">
+    <element name="style:tab-stop">
+        <ref name="style-tab-stop-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="style-tab-stop-attlist" combine="interleave">
+    <attribute name="style:position">
+        <ref name="nonNegativeLength"/>
+    </attribute>
+</define>
+<define name="style-tab-stop-attlist" combine="interleave">
+    <choice>
+        <optional>
+            <attribute name="style:type" a:defaultValue="left">
+                <choice>
+                    <value>left</value>
+                    <value>center</value>
+                    <value>right</value>
+                </choice>
+            </attribute>
+        </optional>
+        <group>
+            <attribute name="style:type">
+                <value>char</value>
+            </attribute>
+            <ref name="style-tab-stop-char-attlist"/>
+        </group>
+    </choice>
+</define>
+<define name="style-tab-stop-char-attlist" combine="interleave">
+    <attribute name="style:char">
+        <ref name="character"/>
+    </attribute>
+</define>
+<define name="style-tab-stop-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:leader-type">
+            <ref name="lineType"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-tab-stop-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:leader-style">
+            <ref name="lineStyle"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-tab-stop-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:leader-width">
+            <ref name="lineWidth"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-tab-stop-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:leader-color">
+            <choice>
+                <value>font-color</value>
+                <ref name="color"/>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-tab-stop-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:leader-text" a:defaultValue=" ">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-tab-stop-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:leader-text-style">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-paragraph-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:tab-stop-distance">
+            <ref name="nonNegativeLength"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-paragraph-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="fo:hyphenation-keep">
+            <choice>
+                <value>auto</value>
+                <value>page</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-paragraph-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="fo:hyphenation-ladder-count">
+            <choice>
+                <value>no-limit</value>
+                <ref name="positiveInteger"/>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-paragraph-properties-elements" combine="interleave">
+    <ref name="style-drop-cap"/>
+</define>
+
+<define name="style-drop-cap">
+    <optional>
+        <element name="style:drop-cap">
+            <ref name="style-drop-cap-attlist"/>
+            <empty/>
+        </element>
+    </optional>
+</define>
+<define name="style-drop-cap-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:length" a:defaultValue="1">
+            <choice>
+                <value>word</value>
+                <ref name="positiveInteger"/>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-drop-cap-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:lines" a:defaultValue="1">
+            <ref name="positiveInteger"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-drop-cap-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:distance" a:defaultValue="0cm">
+            <ref name="length"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-drop-cap-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:style-name">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-paragraph-properties-attlist" combine="interleave">
+        <optional>
+            <attribute name="style:register-true">
+                <ref name="boolean"/>
+            </attribute>
+        </optional>
+    </define>
+<define name="style-paragraph-properties-attlist" combine="interleave">
+    <ref name="common-horizontal-margin-attlist"/>
+</define>
+
+<define name="common-horizontal-margin-attlist">
+    <optional>
+        <attribute name="fo:margin-left">
+            <choice>
+                <ref name="length"/>
+                <ref name="percent"/>
+            </choice>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="fo:margin-right">
+            <choice>
+                <ref name="length"/>
+                <ref name="percent"/>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-paragraph-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="fo:text-indent">
+            <choice>
+                <ref name="length"/>
+                <ref name="percent"/>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-paragraph-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:auto-text-indent">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-paragraph-properties-attlist" combine="interleave">
+    <ref name="common-vertical-margin-attlist"/>
+</define>
+
+<define name="common-vertical-margin-attlist">
+    <optional>
+        <attribute name="fo:margin-top">
+            <choice>
+                <ref name="nonNegativeLength"/>
+                <ref name="percent"/>
+            </choice>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="fo:margin-bottom">
+            <choice>
+                <ref name="nonNegativeLength"/>
+                <ref name="percent"/>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-paragraph-properties-attlist" combine="interleave">
+    <ref name="common-margin-attlist"/>
+</define>
+
+<define name="common-margin-attlist">
+    <optional>
+        <attribute name="fo:margin">
+            <choice>
+                <ref name="nonNegativeLength"/>
+                <ref name="percent"/>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-paragraph-properties-attlist" combine="interleave">
+    <ref name="common-break-attlist"/>
+</define>
+
+<define name="common-break-attlist">
+    <optional>
+        <attribute name="fo:break-before">
+            <choice>
+                <value>auto</value>
+                <value>column</value>
+                <value>page</value>
+            </choice>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="fo:break-after">
+            <choice>
+                <value>auto</value>
+                <value>column</value>
+                <value>page</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-paragraph-properties-attlist" combine="interleave">
+    <ref name="common-background-color-attlist"/>
+</define>
+
+<define name="common-background-color-attlist">
+    <optional>
+        <attribute name="fo:background-color">
+            <choice>
+                <value>transparent</value>
+                <ref name="color"/>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-paragraph-properties-elements" combine="interleave">
+    <ref name="style-background-image"/>
+</define>
+
+<define name="style-background-image">
+    <optional>
+        <element name="style:background-image">
+            <ref name="style-background-image-attlist"/>
+            <choice>
+                <ref name="common-draw-data-attlist"/>
+                <ref name="office-binary-data"/>
+                <empty/>
+            </choice>
+        </element>
+    </optional>
+</define>
+<define name="style-background-image-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:repeat" a:defaultValue="repeat">
+            <choice>
+                <value>no-repeat</value>
+                <value>repeat</value>
+                <value>stretch</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-background-image-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:position" a:defaultValue="center">
+            <choice>
+                <value>left</value>
+                <value>center</value>
+                <value>right</value>
+                <value>top</value>
+                <value>bottom</value>
+                <list>
+                    <ref name="horiBackPos"/>
+                    <ref name="vertBackPos"/>
+                </list>
+                <list>
+                    <ref name="vertBackPos"/>
+                    <ref name="horiBackPos"/>
+                </list>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+
+<define name="horiBackPos">
+    <choice>
+        <value>left</value>
+        <value>center</value>
+        <value>right</value>
+    </choice>
+</define>
+<define name="vertBackPos">
+    <choice>
+        <value>top</value>
+        <value>center</value>
+        <value>bottom</value>
+    </choice>
+</define>
+<define name="style-background-image-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:filter-name">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-background-image-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:opacity">
+            <ref name="percent"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-paragraph-properties-attlist" combine="interleave">
+    <ref name="common-border-attlist"/>
+</define>
+
+<define name="common-border-attlist">
+    <optional>
+        <attribute name="fo:border">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="fo:border-top">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="fo:border-bottom">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="fo:border-left">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="fo:border-right">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-paragraph-properties-attlist" combine="interleave">
+    <ref name="common-border-line-width-attlist"/>
+</define>
+
+<define name="common-border-line-width-attlist">
+    <optional>
+        <attribute name="style:border-line-width">
+            <ref name="borderWidths"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="style:border-line-width-top">
+            <ref name="borderWidths"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="style:border-line-width-bottom">
+            <ref name="borderWidths"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="style:border-line-width-left">
+            <ref name="borderWidths"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="style:border-line-width-right">
+            <ref name="borderWidths"/>
+        </attribute>
+    </optional>
+</define>
+
+<define name="borderWidths">
+    <list>
+        <ref name="positiveLength"/>
+        <ref name="positiveLength"/>
+        <ref name="positiveLength"/>
+    </list>
+</define>
+<define name="style-paragraph-properties-attlist" combine="interleave">
+    <ref name="common-padding-attlist"/>
+</define>
+
+<define name="common-padding-attlist">
+    <optional>
+        <attribute name="fo:padding">
+            <ref name="nonNegativeLength"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="fo:padding-top">
+            <ref name="nonNegativeLength"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="fo:padding-bottom">
+            <ref name="nonNegativeLength"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="fo:padding-left">
+            <ref name="nonNegativeLength"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="fo:padding-right">
+            <ref name="nonNegativeLength"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-paragraph-properties-attlist" combine="interleave">
+    <ref name="common-shadow-attlist"/>
+</define>
+
+<define name="common-shadow-attlist">
+    <optional>
+        <attribute name="style:shadow">
+            <ref name="shadowType"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-paragraph-properties-attlist" combine="interleave">
+    <ref name="common-keep-with-next-attlist"/>
+</define>
+
+<define name="common-keep-with-next-attlist">
+    <optional>
+        <attribute name="fo:keep-with-next">
+            <choice>
+                <value>auto</value>
+                <value>always</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-paragraph-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="text:number-lines" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-paragraph-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="text:line-number">
+            <ref name="nonNegativeInteger"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-paragraph-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:text-autospace">
+            <choice>
+                <value>none</value>
+                <value>ideograph-alpha</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-paragraph-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:punctuation-wrap">
+            <choice>
+                <value>simple</value>
+                <value>hanging</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-paragraph-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:line-break">
+            <choice>
+                <value>normal</value>
+                <value>strict</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-paragraph-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:vertical-align" a:defaultValue="auto">
+            <choice>
+                <value>top</value>
+                <value>middle</value>
+                <value>bottom</value>
+                <value>auto</value>
+                <value>baseline</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-paragraph-properties-attlist" combine="interleave">
+    <ref name="common-writing-mode-attlist"/>
+</define>
+
+<define name="common-writing-mode-attlist">
+    <optional>
+        <attribute name="style:writing-mode">
+            <choice>
+                <value>lr-tb</value>
+                <value>rl-tb</value>
+                <value>tb-rl</value>
+                <value>tb-lr</value>
+                <value>lr</value>
+                <value>rl</value>
+                <value>tb</value>
+                <value>page</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-paragraph-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:writing-mode-automatic">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-paragraph-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:snap-to-layout-grid">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-paragraph-properties-attlist" combine="interleave">
+    <ref name="common-page-number-attlist"/>
+</define>
+
+<define name="common-page-number-attlist">
+    <optional>
+        <attribute name="style:page-number">
+            <choice>                <ref name="positiveInteger"/>                <value>auto</value>            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-paragraph-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:background-transparency">
+            <ref name="percent"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-ruby-properties">
+    <element name="style:ruby-properties">
+        <ref name="style-ruby-properties-content"/>
+    </element>
+</define>
+
+<define name="style-ruby-properties-content">
+    <ref name="style-properties-content"/>
+</define>
+
+<define name="style-ruby-properties-content-strict">
+    <ref name="style-ruby-properties-attlist"/>
+    <ref name="style-ruby-properties-elements"/>
+</define>
+
+<define name="style-ruby-properties-elements">
+    <empty/>
+</define>
+<define name="style-ruby-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:ruby-position">
+            <choice>
+                <value>above</value>
+                <value>below</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-ruby-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:ruby-align">
+            <choice>
+                <value>left</value>
+                <value>center</value>
+                <value>right</value>
+                <value>distribute-letter</value>
+                <value>distribute-space</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-section-properties">
+    <element name="style:section-properties">
+        <ref name="style-section-properties-content"/>
+    </element>
+</define>
+
+<define name="style-section-properties-content">
+    <ref name="style-properties-content"/>
+</define>
+
+<define name="style-section-properties-content-strict">
+    <ref name="style-section-properties-attlist"/>
+    <ref name="style-section-properties-elements"/>
+</define>
+<define name="style-section-properties-attlist" combine="interleave">
+    <ref name="common-background-color-attlist"/>
+</define>
+<define name="style-section-properties-elements" combine="interleave">
+    <ref name="style-background-image"/>
+</define>
+<define name="style-section-properties-attlist" combine="interleave">
+    <ref name="common-horizontal-margin-attlist"/>
+</define>
+<define name="style-section-properties-elements" combine="interleave">
+    <ref name="style-columns"/>
+</define>
+
+<define name="style-columns">
+    <optional>
+        <element name="style:columns">
+            <ref name="style-columns-attlist"/>
+            <optional>
+                <ref name="style-column-sep"/>
+            </optional>
+            <zeroOrMore>
+                <ref name="style-column"/>
+            </zeroOrMore>
+        </element>
+    </optional>
+</define>
+<define name="style-columns-attlist" combine="interleave">
+    <attribute name="fo:column-count">
+        <ref name="positiveInteger"/>
+    </attribute>
+</define>
+<define name="style-columns-attlist" combine="interleave">
+    <optional>
+        <attribute name="fo:column-gap">
+            <ref name="length"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-column">
+    <element name="style:column">
+        <ref name="style-column-attlist"/>
+    </element>
+</define>
+<define name="style-column-attlist" combine="interleave">
+    <attribute name="style:rel-width">
+        <ref name="relativeLength"/>
+    </attribute>
+</define>
+<define name="style-column-attlist" combine="interleave">
+    <optional>
+        <attribute name="fo:start-indent" a:defaultValue="0cm">
+            <ref name="length"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-column-attlist" combine="interleave">
+    <optional>
+        <attribute name="fo:end-indent" a:defaultValue="0cm">
+            <ref name="length"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-column-attlist" combine="interleave">
+    <optional>
+        <attribute name="fo:space-before" a:defaultValue="0cm">
+            <ref name="length"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-column-attlist" combine="interleave">
+    <optional>
+        <attribute name="fo:space-after" a:defaultValue="0cm">
+            <ref name="length"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-column-sep">
+    <element name="style:column-sep">
+        <ref name="style-column-sep-attlist"/>
+    </element>
+</define>
+<define name="style-column-sep-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:style" a:defaultValue="solid">
+            <choice>
+                <value>none</value>
+                <value>solid</value>
+                <value>dotted</value>
+                <value>dashed</value>
+                <value>dot-dashed</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-column-sep-attlist" combine="interleave">
+    <attribute name="style:width">
+        <ref name="length"/>
+    </attribute>
+</define>
+<define name="style-column-sep-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:height" a:defaultValue="100%">
+            <ref name="percent"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-column-sep-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:vertical-align" a:defaultValue="top">
+            <choice>
+                <value>top</value>
+                <value>middle</value>
+                <value>bottom</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-column-sep-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:color" a:defaultValue="#000000">
+            <ref name="color"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-section-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:protect" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-section-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="text:dont-balance-text-columns">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-section-properties-attlist" combine="interleave">
+    <ref name="common-writing-mode-attlist"/>
+</define>
+<define name="style-section-properties-elements" combine="interleave">
+    <zeroOrMore>
+        <ref name="text-notes-configuration"/>
+    </zeroOrMore>
+</define>
+<define name="style-table-properties">
+    <element name="style:table-properties">
+        <ref name="style-table-properties-content"/>
+    </element>
+</define>
+
+<define name="style-table-properties-content">
+    <ref name="style-properties-content"/>
+</define>
+
+<define name="style-table-properties-content-strict">
+    <ref name="style-table-properties-attlist"/>
+    <ref name="style-table-properties-elements"/>
+</define>
+<define name="style-table-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:width">
+            <ref name="positiveLength"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="style:rel-width">
+            <ref name="percent"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-table-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:align">
+            <choice>
+                <value>left</value>
+                <value>center</value>
+                <value>right</value>
+                <value>margins</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-table-properties-attlist" combine="interleave">
+    <ref name="common-horizontal-margin-attlist"/>
+</define>
+<define name="style-table-properties-attlist" combine="interleave">
+    <ref name="common-vertical-margin-attlist"/>
+</define>
+<define name="style-table-properties-attlist" combine="interleave">
+    <ref name="common-margin-attlist"/>
+</define>
+<define name="style-table-properties-attlist" combine="interleave">
+    <ref name="common-page-number-attlist"/>
+</define>
+<define name="style-table-properties-attlist" combine="interleave">
+    <ref name="common-break-attlist"/>
+</define>
+<define name="style-table-properties-attlist" combine="interleave">
+    <ref name="common-background-color-attlist"/>
+</define>
+<define name="style-table-properties-elements" combine="interleave">
+    <ref name="style-background-image"/>
+</define>
+<define name="style-table-properties-attlist" combine="interleave">
+    <ref name="common-shadow-attlist"/>
+</define>
+<define name="style-table-properties-attlist" combine="interleave">
+    <ref name="common-keep-with-next-attlist"/>
+</define>
+<define name="style-table-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:may-break-between-rows">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-table-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:border-model">
+            <choice>
+                <value>collapsing</value>
+                <value>separating</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-table-properties-attlist" combine="interleave">
+    <ref name="common-writing-mode-attlist"/>
+</define>
+<define name="style-table-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:display">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-table-column-properties">
+    <element name="style:table-column-properties">
+        <ref name="style-table-column-properties-content"/>
+    </element>
+</define>
+
+<define name="style-table-column-properties-content">
+    <ref name="style-properties-content"/>
+</define>
+
+<define name="style-table-column-properties-content-strict">
+    <ref name="style-table-column-properties-attlist"/>
+    <ref name="style-table-column-properties-elements"/>
+</define>
+
+<define name="style-table-column-properties-elements">
+    <empty/>
+</define>
+<define name="style-table-column-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:column-width">
+            <ref name="positiveLength"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="style:rel-column-width">
+            <ref name="relativeLength"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-table-column-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:use-optimal-column-width">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-table-column-properties-attlist" combine="interleave">
+    <ref name="common-break-attlist"/>
+</define>
+<define name="style-table-row-properties">
+    <element name="style:table-row-properties">
+        <ref name="style-table-row-properties-content"/>
+    </element>
+</define>
+
+<define name="style-table-row-properties-content">
+    <ref name="style-properties-content"/>
+</define>
+
+<define name="style-table-row-properties-content-strict">
+    <ref name="style-table-row-properties-attlist"/>
+    <ref name="style-table-row-properties-elements"/>
+</define>
+<define name="style-table-row-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:row-height">
+            <ref name="positiveLength"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="style:min-row-height">
+            <ref name="nonNegativeLength"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-table-row-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:use-optimal-row-height">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-table-row-properties-attlist" combine="interleave">
+    <ref name="common-background-color-attlist"/>
+</define>
+<define name="style-table-row-properties-elements" combine="interleave">
+    <ref name="style-background-image"/>
+</define>
+<define name="style-table-row-properties-attlist" combine="interleave">
+    <ref name="common-break-attlist"/>
+</define>
+<define name="style-table-row-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="fo:keep-together">
+            <choice>
+                <value>auto</value>
+                <value>always</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-table-cell-properties">
+    <element name="style:table-cell-properties">
+        <ref name="style-table-cell-properties-content"/>
+    </element>
+</define>
+
+<define name="style-table-cell-properties-content">
+    <ref name="style-properties-content"/>
+</define>
+
+<define name="style-table-cell-properties-content-strict">
+    <ref name="style-table-cell-properties-attlist"/>
+    <ref name="style-table-cell-properties-elements"/>
+</define>
+<define name="style-table-cell-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:vertical-align">
+            <choice>
+                <value>top</value>
+                <value>middle</value>
+                <value>bottom</value>
+                <value>automatic</value>
+            </choice>
+            </attribute>
+    </optional>
+</define>
+<define name="style-table-cell-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:text-align-source">
+            <choice>
+                <value>fix</value>
+                <value>value-type</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-table-cell-properties-attlist" combine="interleave">
+    <ref name="common-style-direction-attlist"/>
+</define>
+
+<define name="common-style-direction-attlist">
+    <optional>
+        <attribute name="style:direction">
+            <choice>
+                <value>ltr</value>
+                <value>ttb</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-table-cell-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:glyph-orientation-vertical">
+            <choice>
+                <value>auto</value>
+                <value>0</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-table-cell-properties-attlist" combine="interleave">
+    <ref name="common-shadow-attlist"/>
+</define>
+<define name="style-table-cell-properties-attlist" combine="interleave">
+    <ref name="common-background-color-attlist"/>
+</define>
+<define name="style-table-cell-properties-elements" combine="interleave">
+    <ref name="style-background-image"/>
+</define>
+<define name="style-table-cell-properties-attlist" combine="interleave">
+    <ref name="common-border-attlist"/>
+</define>
+<define name="style-table-cell-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:diagonal-tl-br">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="style:diagonal-tl-br-widths">
+            <ref name="borderWidths"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="style:diagonal-bl-tr">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="style:diagonal-bl-tr-widths">
+            <ref name="borderWidths"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-table-cell-properties-attlist" combine="interleave">
+    <ref name="common-border-line-width-attlist"/>
+</define>
+<define name="style-table-cell-properties-attlist" combine="interleave">
+    <ref name="common-padding-attlist"/>
+</define>
+<define name="style-table-cell-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="fo:wrap-option">
+            <choice>
+                <value>no-wrap</value>
+                <value>wrap</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-table-cell-properties-attlist" combine="interleave">
+    <ref name="common-rotation-angle-attlist"/>
+</define>
+
+<define name="common-rotation-angle-attlist">
+    <optional>
+        <attribute name="style:rotation-angle">
+            <ref name="nonNegativeInteger"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-table-cell-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:rotation-align">
+            <choice>
+                <value>none</value>
+                <value>bottom</value>
+                <value>top</value>
+                <value>center</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-table-cell-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:cell-protect">
+            <choice>
+                <value>none</value>
+                <value>hidden-and-protected</value>
+                <list>
+                    <oneOrMore>
+                        <choice>
+                            <value>protected</value>
+                            <value>formula-hidden</value>
+                        </choice>
+                    </oneOrMore>
+                </list>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-table-cell-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:print-content">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-table-cell-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:decimal-places">
+            <ref name="nonNegativeInteger"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-table-cell-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:repeat-content">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-table-cell-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:shrink-to-fit">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-list-level-properties">
+    <element name="style:list-level-properties">
+        <ref name="style-list-level-properties-content"/>
+    </element>
+</define>
+
+<define name="style-list-level-properties-content">
+    <ref name="style-properties-content"/>
+</define>
+
+<define name="style-list-level-properties-content-strict">
+    <ref name="style-list-level-properties-attlist"/>
+    <ref name="style-list-level-properties-elements"/>
+</define>
+
+<define name="style-list-level-properties-elements">
+    <empty/>
+</define>
+<define name="style-list-level-properties-attlist" combine="interleave">
+    <ref name="common-text-align"/>
+</define>
+<define name="style-list-level-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="text:space-before">
+            <ref name="nonNegativeLength"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-list-level-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="text:min-label-width">
+            <ref name="nonNegativeLength"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-list-level-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="text:min-label-distance">
+            <ref name="nonNegativeLength"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-list-level-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:font-name">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-list-level-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="fo:width">
+            <ref name="positiveLength"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="fo:height">
+            <ref name="positiveLength"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-list-level-properties-attlist" combine="interleave">
+    <ref name="common-vertical-rel-attlist"/>
+    <ref name="common-vertical-pos-attlist"/>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:stroke">
+            <choice>
+                <value>none</value>
+                <value>dash</value>
+                <value>solid</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:stroke-dash">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:stroke-dash-names">
+            <ref name="styleNameRefs"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="svg:stroke-width">
+            <ref name="length"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="svg:stroke-color">
+            <ref name="color"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:marker-start">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:marker-end">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:marker-start-width">
+            <ref name="length"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:marker-end-width">
+            <ref name="length"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:marker-start-center">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:marker-end-center">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="svg:stroke-opacity">
+            <choice>
+                <data type="double">
+                    <param name="minInclusive">0</param>
+                    <param name="maxInclusive">1</param>
+                </data>
+                <ref name="percent"/>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:stroke-linejoin">
+            <choice>
+                <value>miter</value>
+                <value>round</value>
+                <value>bevel</value>
+                <value>middle</value>
+                <value>none</value>
+                <value>inherit</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-fill-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:fill">
+            <choice>
+                <value>none</value>
+                <value>solid</value>
+                <value>bitmap</value>
+                <value>gradient</value>
+                <value>hatch</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-fill-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:fill-color">
+            <ref name="color"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-fill-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:secondary-fill-color">
+            <ref name="color"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-fill-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:fill-gradient-name">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-fill-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:gradient-step-count">
+            <ref name="nonNegativeInteger"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-fill-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:fill-hatch-name">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-fill-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:fill-hatch-solid">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-fill-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:fill-image-name">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-fill-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:repeat">
+            <choice>
+                <value>no-repeat</value>
+                <value>repeat</value>
+                <value>stretch</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-fill-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:fill-image-width">
+            <choice>
+                <ref name="length"/>
+                <ref name="percent"/>
+            </choice>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="draw:fill-image-height">
+            <choice>
+                <ref name="length"/>
+                <ref name="percent"/>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-fill-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:fill-image-ref-point-x">
+            <ref name="percent"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="draw:fill-image-ref-point-y">
+            <ref name="percent"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="draw:fill-image-ref-point">
+            <choice>
+                <value>top-left</value>
+                <value>top</value>
+                <value>top-right</value>
+                <value>left</value>
+                <value>center</value>
+                <value>right</value>
+                <value>bottom-left</value>
+                <value>bottom</value>
+                <value>bottom-right</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-fill-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:tile-repeat-offset"/>
+    </optional>
+</define>
+<define name="style-graphic-fill-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:opacity">
+            <ref name="percent"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-fill-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:opacity-name">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-fill-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="svg:fill-rule">
+            <choice>
+                <value>nonzero</value>
+                <value>evenodd</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:symbol-color">
+            <ref name="color"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="text:animation">
+            <choice>
+                <value>none</value>
+                <value>scroll</value>
+                <value>alternate</value>
+                <value>slide</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="text:animation-direction">
+            <choice>
+                <value>left</value>
+                <value>right</value>
+                <value>up</value>
+                <value>down</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="text:animation-start-inside">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="text:animation-stop-inside">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="text:animation-repeat">
+            <ref name="nonNegativeInteger"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="text:animation-delay">
+            <ref name="duration"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="text:animation-steps">
+            <ref name="length"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:auto-grow-width">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="draw:auto-grow-height">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:fit-to-size">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:fit-to-contour">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:textarea-vertical-align">
+            <choice>
+                <value>top</value>
+                <value>middle</value>
+                <value>bottom</value>
+                <value>justify</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:textarea-horizontal-align">
+            <choice>
+                <value>left</value>
+                <value>center</value>
+                <value>right</value>
+                <value>justify</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="fo:wrap-option">
+            <choice>
+                <value>no-wrap</value>
+                <value>wrap</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-elements" combine="interleave">
+    <optional>
+        <ref name="text-list-style"/>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:color-mode">
+            <choice>
+                <value>greyscale</value>
+                <value>mono</value>
+                <value>watermark</value>
+                <value>standard</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:color-inversion">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:luminance">
+            <ref name="percent"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:contrast">
+            <ref name="percent"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:gamma">
+            <ref name="percent"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:red">
+            <ref name="percent"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:green">
+            <ref name="percent"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:blue">
+            <ref name="percent"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:image-opacity">
+            <ref name="percent"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:shadow">
+            <choice>
+                <value>visible</value>
+                <value>hidden</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:shadow-offset-x">
+            <ref name="length"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="draw:shadow-offset-y">
+            <ref name="length"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:shadow-color">
+            <ref name="color"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:shadow-opacity">
+            <ref name="percent"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:start-line-spacing-horizontal">
+            <ref name="distance"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="draw:start-line-spacing-vertical">
+            <ref name="distance"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:end-line-spacing-horizontal">
+            <ref name="distance"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="draw:end-line-spacing-vertical">
+            <ref name="distance"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:line-distance">
+            <ref name="distance"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:guide-overhang">
+            <ref name="length"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:guide-distance">
+            <ref name="distance"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:start-guide">
+            <ref name="length"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:end-guide">
+            <ref name="length"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:placing">
+            <choice>
+                <value>below</value>
+                <value>above</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:parallel">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:measure-align">
+            <choice>
+                <value>automatic</value>
+                <value>left-outside</value>
+                <value>inside</value>
+                <value>right-outside</value>
+            </choice>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="draw:measure-vertical-align">
+            <choice>
+                <value>automatic</value>
+                <value>above</value>
+                <value>below</value>
+                <value>center</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:unit">
+            <choice>
+                <value>automatic</value>
+                <value>mm</value>
+                <value>cm</value>
+                <value>m</value>
+                <value>km</value>
+                <value>pt</value>
+                <value>pc</value>
+                <value>inch</value>
+                <value>ft</value>
+                <value>mi</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:show-unit">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:decimal-places">
+            <ref name="nonNegativeInteger"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:caption-type">
+            <choice>
+                <value>straight-line</value>
+                <value>angled-line</value>
+                <value>angled-connector-line</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:caption-angle-type">
+            <choice>
+                <value>fixed</value>
+                <value>free</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:caption-angle">
+            <ref name="nonNegativeInteger"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:caption-gap">
+            <ref name="distance"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:caption-escape-direction">
+            <choice>
+                <value>horizontal</value>
+                <value>vertical</value>
+                <value>auto</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:caption-escape">
+            <choice>
+                <ref name="length"/>
+                <ref name="percent"/>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:caption-line-length">
+            <ref name="length"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:caption-fit-line-length">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="dr3d:horizontal-segments">
+            <ref name="nonNegativeInteger"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="dr3d:vertical-segments">
+            <ref name="nonNegativeInteger"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="dr3d:edge-rounding">
+            <ref name="percent"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="dr3d:edge-rounding-mode">
+            <choice>
+                <value>correct</value>
+                <value>attractive</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="dr3d:back-scale">
+            <ref name="percent"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="dr3d:depth">
+            <ref name="length"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="dr3d:backface-culling">
+            <choice>
+                <value>enabled</value>
+                <value>disabled</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="dr3d:end-angle">
+            <ref name="nonNegativeInteger"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="dr3d:close-front">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="dr3d:close-back">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="dr3d:lighting-mode">
+            <choice>
+                <value>standard</value>
+                <value>double-sided</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="dr3d:normals-kind">
+            <choice>
+                <value>object</value>
+                <value>flat</value>
+                <value>sphere</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="dr3d:normals-direction">
+            <choice>
+                <value>normal</value>
+                <value>inverse</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="dr3d:texture-generation-mode-x">
+            <choice>
+                <value>object</value>
+                <value>parallel</value>
+                <value>sphere</value>
+            </choice>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="dr3d:texture-generation-mode-y">
+            <choice>
+                <value>object</value>
+                <value>parallel</value>
+                <value>sphere</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="dr3d:texture-kind">
+            <choice>
+                <value>luminance</value>
+                <value>intensity</value>
+                <value>color</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="dr3d:texture-filter">
+            <choice>
+                <value>enabled</value>
+                <value>disabled</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="dr3d:texture-mode">
+            <choice>
+                <value>replace</value>
+                <value>modulate</value>
+                <value>blend</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="dr3d:ambient-color">
+            <ref name="color"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="dr3d:emissive-color">
+            <ref name="color"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="dr3d:specular-color">
+            <ref name="color"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="dr3d:diffuse-color">
+            <ref name="color"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="dr3d:shininess">
+            <ref name="percent"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="dr3d:shadow">
+            <choice>
+                <value>visible</value>
+                <value>hidden</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <ref name="common-draw-rel-size-attlist"/>
+    <optional>
+        <attribute name="fo:min-width">
+            <choice>
+                <ref name="length"/>
+                <ref name="percent"/>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="fo:min-height">
+            <choice>
+                <ref name="length"/>
+                <ref name="percent"/>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="fo:max-height">
+            <choice>
+                <ref name="length"/>
+                <ref name="percent"/>
+            </choice>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="fo:max-width">
+            <choice>
+                <ref name="length"/>
+                <ref name="percent"/>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <ref name="common-horizontal-margin-attlist"/>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <ref name="common-vertical-margin-attlist"/>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <ref name="common-margin-attlist"/>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:print-content">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:protect">
+            <choice>
+                <value>none</value>
+                <list>
+                    <oneOrMore>
+                        <choice>
+                            <value>content</value>
+                            <value>position</value>
+                            <value>size</value>
+                        </choice>
+                    </oneOrMore>
+                </list>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:horizontal-pos">
+            <choice>
+                <value>left</value>
+                <value>center</value>
+                <value>right</value>
+                <value>from-left</value>
+                <value>inside</value>
+                <value>outside</value>
+                <value>from-inside</value>
+            </choice>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="svg:x">
+            <ref name="coordinate"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:horizontal-rel">
+            <choice>
+                    <value>page</value>
+                <value>page-content</value>
+                <value>page-start-margin</value>
+                <value>page-end-margin</value>
+                <value>frame</value>
+                <value>frame-content</value>
+                <value>frame-start-margin</value>
+                <value>frame-end-margin</value>
+                <value>paragraph</value>
+                <value>paragraph-content</value>
+                <value>paragraph-start-margin</value>
+                <value>paragraph-end-margin</value>
+                <value>char</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <ref name="common-vertical-pos-attlist"/>
+</define>
+
+<define name="common-vertical-pos-attlist">
+    <optional>
+        <attribute name="style:vertical-pos">
+            <choice>
+                <value>top</value>
+                <value>middle</value>
+                <value>bottom</value>
+                <value>from-top</value>
+                <value>below</value>
+            </choice>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="svg:y">
+            <ref name="coordinate"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <ref name="common-vertical-rel-attlist"/>
+</define>
+
+<define name="common-vertical-rel-attlist">
+    <optional>
+        <attribute name="style:vertical-rel">
+            <choice>
+                <value>page</value>
+                <value>page-content</value>
+                <value>frame</value>
+                <value>frame-content</value>
+                <value>paragraph</value>
+                <value>paragraph-content</value>
+                <value>char</value>
+                <value>line</value>
+                <value>baseline</value>
+                <value>text</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <ref name="common-text-anchor-attlist"/>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <ref name="common-border-attlist"/>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <ref name="common-border-line-width-attlist"/>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <ref name="common-padding-attlist"/>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <ref name="common-shadow-attlist"/>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <ref name="common-background-color-attlist"/>
+</define>
+<define name="style-graphic-properties-elements" combine="interleave">
+    <ref name="style-background-image"/>
+</define>
+<define name="style-graphic-properties-elements" combine="interleave">
+    <ref name="style-columns"/>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:editable">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:wrap">
+            <choice>
+                <value>none</value>
+                <value>left</value>
+                <value>right</value>
+                <value>parallel</value>
+                <value>dynamic</value>
+                <value>run-through</value>
+                <value>biggest</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:wrap-dynamic-threshold">
+            <ref name="nonNegativeLength"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:number-wrapped-paragraphs">
+            <choice>
+                <value>no-limit</value>
+                <ref name="positiveInteger"/>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:wrap-contour">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:wrap-contour-mode">
+            <choice>
+                <value>full</value>
+                <value>outside</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:run-through">
+            <choice>
+                <value>foreground</value>
+                <value>background</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:flow-with-text">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:overflow-behavior">
+            <choice>
+                <value>clip</value>
+                <value>auto-create-new-frame</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:mirror">
+            <choice>
+                <value>none</value>
+                <value>vertical</value>
+                <ref name="horizontal-mirror"/>
+                <list>
+                    <value>vertical</value>
+                    <ref name="horizontal-mirror"/>
+                </list>
+                <list>
+                    <ref name="horizontal-mirror"/>
+                    <value>vertical</value>
+                </list>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+
+<define name="horizontal-mirror">
+    <choice>
+        <value>horizontal</value>
+        <value>horizontal-on-odd</value>
+        <value>horizontal-on-even</value>
+    </choice>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="fo:clip">
+            <!-- The attribute value must match the one XSL's clip -->
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:wrap-influence-on-position"
+                    a:defaultValue="iterative">
+            <choice>
+                <value>iterative</value>
+                <value>once-concurrent</value>
+                <value>once-successive</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <ref name="common-writing-mode-attlist"/>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:frame-display-scrollbar">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:frame-display-border">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:frame-margin-horizontal">
+            <ref name="nonNegativePixelLength"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="draw:frame-margin-vertical">
+            <ref name="nonNegativePixelLength"/>
+        </attribute>
+    </optional>
+</define>
+
+<define name="nonNegativePixelLength">
+    <data type="string">
+        <param name="pattern">([0-9]+(\.[0-9]*)?|\.[0-9]+)(px)</param>
+    </data>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:visible-area-left">
+            <ref name="nonNegativeLength"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="draw:visible-area-top">
+            <ref name="nonNegativeLength"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="draw:visible-area-width">
+            <ref name="positiveLength"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="draw:visible-area-height">
+            <ref name="positiveLength"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:ole-draw-aspect">
+            <ref name="nonNegativeInteger"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-chart-properties">
+    <element name="style:chart-properties">
+        <ref name="style-chart-properties-content"/>
+    </element>
+</define>
+
+<define name="style-chart-properties-content">
+    <ref name="style-properties-content"/>
+</define>
+
+<define name="style-chart-properties-content-strict">
+    <ref name="style-chart-properties-attlist"/>
+    <ref name="style-chart-properties-elements"/>
+</define>
+
+<define name="style-chart-properties-elements">
+    <empty/>
+</define>
+<define name="style-chart-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="chart:scale-text" a:defaultValue="true">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-chart-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="chart:three-dimensional">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-chart-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="chart:deep">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-chart-properties-attlist" combine="interleave">
+    <choice>
+        <attribute name="chart:symbol-type">
+            <value>none</value>
+        </attribute>
+        <attribute name="chart:symbol-type">
+            <value>automatic</value>
+        </attribute>
+        <group>
+            <attribute name="chart:symbol-type">
+                <value>named-symbol</value>
+            </attribute>
+            <attribute name="chart:symbol-name">
+                <choice>
+                    <value>square</value>
+                    <value>diamond</value>
+                    <value>arrow-down</value>
+                    <value>arrow-up</value>
+                    <value>arrow-right</value>
+                    <value>arrow-left</value>
+                    <value>bow-tie</value>
+                    <value>hourglass</value>
+                    <value>circle</value>
+                    <value>star</value>
+                    <value>x</value>
+                    <value>plus</value>
+                    <value>asterisk</value>
+                    <value>horizontal-bar</value>
+                    <value>vertical-bar</value>
+                </choice>
+            </attribute>
+        </group>
+        <group>
+            <attribute name="chart:symbol-type">
+                <value>image</value>
+            </attribute>
+            <element name="chart:symbol-image">
+                <attribute name="xlink:href">
+                    <ref name="anyURI"/>
+                </attribute>
+            </element>
+        </group>
+        <empty/>
+    </choice>
+</define>
+<define name="style-chart-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="chart:symbol-width">
+            <ref name="nonNegativeLength"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="chart:symbol-height">
+            <ref name="nonNegativeLength"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-chart-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="chart:vertical" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-chart-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="chart:connect-bars" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-chart-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="chart:gap-width">
+            <ref name="integer"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="chart:overlap">
+            <ref name="integer"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-chart-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="chart:japanese-candle-stick"
+                    a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-chart-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="chart:interpolation" a:defaultValue="none">
+            <choice>
+                <value>none</value>
+                <value>cubic-spline</value>
+                <value>b-spline</value>
+            </choice>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="chart:spline-order" a:defaultValue="2">
+            <ref name="positiveInteger"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="chart:spline-resolution" a:defaultValue="20">
+            <ref name="positiveInteger"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-chart-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="chart:pie-offset" a:defaultValue="0">
+            <ref name="nonNegativeInteger"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-chart-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="chart:lines" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-chart-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="chart:solid-type" a:defaultValue="cuboid">
+            <choice>
+                <value>cuboid</value>
+                <value>cylinder</value>
+                <value>cone</value>
+                <value>pyramid</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-chart-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="chart:stacked" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="chart:percentage" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-chart-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="chart:link-data-style-to-source">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-chart-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="chart:visible">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-chart-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="chart:logarithmic">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-chart-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="chart:maximum">
+            <ref name="double"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="chart:minimum">
+            <ref name="double"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="chart:origin">
+            <ref name="double"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="chart:interval-major">
+            <ref name="double"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="chart:interval-minor-divisor">
+            <ref name="positiveInteger"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-chart-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="chart:tick-marks-major-inner">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="chart:tick-marks-major-outer">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="chart:tick-marks-minor-inner">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="chart:tick-marks-minor-outer">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-chart-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="chart:display-label">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="chart:text-overlap">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="text:line-break">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="chart:label-arrangement"
+                   a:defaultValue="side-by-side">
+            <choice>
+                <value>side-by-side</value>
+                <value>stagger-even</value>
+                <value>stagger-odd</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-chart-properties-attlist" combine="interleave">
+    <ref name="common-style-direction-attlist"/>
+</define>
+<define name="style-chart-properties-attlist" combine="interleave">
+    <ref name="common-rotation-angle-attlist"/>
+</define>
+<define name="style-chart-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="chart:data-label-number">
+            <choice>
+                <value>none</value>
+                <value>value</value>
+                <value>percentage</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-chart-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="chart:data-label-text">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-chart-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="chart:data-label-symbol">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-chart-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="chart:mean-value">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-chart-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="chart:error-category" a:defaultValue="none">
+            <choice>
+                <value>none</value>
+                <value>variance</value>
+                <value>standard-deviation</value>
+                <value>percentage</value>
+                <value>error-margin</value>
+                <value>constant</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-chart-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="chart:error-percentage">
+            <ref name="double"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-chart-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="chart:error-margin">
+            <ref name="double"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-chart-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="chart:error-lower-limit">
+            <ref name="double"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="chart:error-upper-limit">
+            <ref name="double"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-chart-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="chart:error-upper-indicator">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="chart:error-lower-indicator">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-chart-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="chart:series-source" a:defaultValue="columns">
+            <choice>
+                <value>columns</value>
+                <value>rows</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-chart-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="chart:regression-type" a:defaultValue="none">
+            <choice>
+                <value>none</value>
+                <value>linear</value>
+                <value>logarithmic</value>
+                <value>exponential</value>
+                <value>power</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-drawing-page-properties-attlist"
+        combine="interleave">
+    <optional>
+        <attribute name="presentation:transition-type">
+            <choice>
+                <value>manual</value>
+                <value>automatic</value>
+                <value>semi-automatic</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-drawing-page-properties-attlist"
+         combine="interleave">
+    <optional>
+        <attribute name="presentation:transition-style">
+            <choice>
+                <value>none</value>
+                <value>fade-from-left</value>
+                <value>fade-from-top</value>
+                <value>fade-from-right</value>
+                <value>fade-from-bottom</value>
+                <value>fade-from-upperleft</value>
+                <value>fade-from-upperright</value>
+                <value>fade-from-lowerleft</value>
+                <value>fade-from-lowerright</value>
+                <value>move-from-left</value>
+                <value>move-from-top</value>
+                <value>move-from-right</value>
+                <value>move-from-bottom</value>
+                <value>move-from-upperleft</value>
+                <value>move-from-upperright</value>
+                <value>move-from-lowerleft</value>
+                <value>move-from-lowerright</value>
+                <value>uncover-to-left</value>
+                <value>uncover-to-top</value>
+                <value>uncover-to-right</value>    
+                <value>uncover-to-bottom</value>
+                <value>uncover-to-upperleft</value>
+                <value>uncover-to-upperright</value>
+                <value>uncover-to-lowerleft</value>
+                <value>uncover-to-lowerright</value>
+                <value>fade-to-center</value>
+                <value>fade-from-center</value>
+                <value>vertical-stripes</value>
+                <value>horizontal-stripes</value>
+                <value>clockwise</value>
+                <value>counterclockwise</value>
+                <value>open-vertical</value>
+                <value>open-horizontal</value>
+                <value>close-vertical</value>
+                <value>close-horizontal</value>
+                <value>wavyline-from-left</value>
+                <value>wavyline-from-top</value>
+                <value>wavyline-from-right</value>
+                <value>wavyline-from-bottom</value>
+                <value>spiralin-left</value>
+                <value>spiralin-right</value>
+                <value>spiralout-left</value>
+                <value>spiralout-right</value>
+                <value>roll-from-top</value>
+                <value>roll-from-left</value>
+                <value>roll-from-right</value>
+                <value>roll-from-bottom</value>
+                <value>stretch-from-left</value>
+                <value>stretch-from-top</value>
+                <value>stretch-from-right</value>
+                <value>stretch-from-bottom</value>
+
+                <value>vertical-lines</value>
+                <value>horizontal-lines</value>
+                <value>dissolve</value>
+                <value>random</value>
+                <value>vertical-checkerboard</value>
+                <value>horizontal-checkerboard</value>
+                <value>interlocking-horizontal-left</value>
+                <value>interlocking-horizontal-right</value>
+                <value>interlocking-vertical-top</value>
+                <value>interlocking-vertical-bottom</value>
+                <value>fly-away</value>
+                <value>open</value>
+                <value>close</value>
+                <value>melt</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-drawing-page-properties-attlist"
+        combine="interleave">
+    <optional>
+        <attribute name="presentation:transition-speed">
+            <ref name="presentationSpeeds"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-drawing-page-properties-attlist " combine="interleave">
+    <optional>
+        <attribute name="smil:type">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-drawing-page-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="smil:subtype">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-drawing-page-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="smil:direction" a:defaultValue="forward">
+            <choice>
+                <value>forward</value>
+                <value>reverse</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-drawing-page-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="smil:fadeColor">
+            <ref name="color"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-drawing-page-properties-attlist"
+        combine="interleave">
+    <optional>
+        <attribute name="presentation:duration">
+            <ref name="duration"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-drawing-page-properties-attlist"
+         combine="interleave">
+    <optional>
+        <attribute name="presentation:visibility">
+            <choice>
+                <value>visible</value>
+                <value>hidden</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-drawing-page-properties-elements"
+         combine="interleave">
+    <optional>
+        <ref name="presentation-sound"/>
+    </optional>
+</define>
+<define name="style-drawing-page-properties-attlist"
+         combine="interleave">
+    <optional>
+        <attribute name="draw:background-size">
+            <choice>
+                <value>full</value>
+                <value>border</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-drawing-page-properties-attlist"
+         combine="interleave">
+    <optional>
+        <attribute name="presentation:background-objects-visible">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-drawing-page-properties-attlist"
+         combine="interleave">
+    <optional>
+        <attribute name="presentation:background-visible">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-drawing-page-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="presentation:display-header">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-drawing-page-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="presentation:display-footer">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-drawing-page-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="presentation:display-page-number">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-drawing-page-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="presentation:display-date-time">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="string">
+    <data type="string"/>
+</define>
+<define name="date">
+    <data type="date"/>
+</define>
+<define name="time">
+    <data type="time"/>
+</define>
+<define name="dateTime">
+    <data type="dateTime"/>
+</define>
+<define name="duration">
+    <data type="duration"/>
+</define>
+<define name="integer">
+    <data type="integer"/>
+</define>
+<define name="nonNegativeInteger">
+    <data type="nonNegativeInteger"/>
+</define>
+<define name="positiveInteger">
+    <data type="positiveInteger"/>
+</define>
+<define name="double">
+    <data type="double"/>
+</define>
+<define name="anyURI">
+    <data type="anyURI"/>
+</define>
+<define name="base64Binary">
+    <data type="base64Binary"/>
+</define>
+<define name="ID">
+    <data type="ID"/>
+</define>
+<define name="IDREF">
+    <data type="IDREF"/>
+</define>
+<define name="IDREFS">
+    <data type="IDREFS"/>
+</define>
+<define name="boolean">
+    <choice>
+        <value>true</value>
+        <value>false</value>
+    </choice>
+</define>
+<define name="dateOrDateTime">
+    <choice>
+        <data type="date"/>
+        <data type="dateTime"/>
+    </choice>
+</define>
+<define name="timeOrDateTime">
+    <choice>
+        <data type="time"/>
+        <data type="dateTime"/>
+    </choice>
+</define>
+<define name="language">
+    <data type="language"/>
+</define>
+<define name="countryCode">
+    <data type="token">
+        <param name="pattern">[A-Za-z0-9]{1,8}</param>
+    </data>
+</define>
+<define name="languageCode">
+    <data type="token">
+        <param name="pattern">[A-Za-z]{1,8}</param>
+    </data>
+</define>
+<define name="character">
+    <data type="string">
+        <param name="length">1</param>
+    </data>
+</define>
+<define name="length">
+    <data type="string">
+        <param name="pattern">-?([0-9]+(\.[0-9]*)?|\.[0-9]+)((cm)|(mm)|(in)|(pt)|(pc)|(px))</param>
+
+    </data>
+</define>
+<define name="nonNegativeLength">
+    <data type="string">
+        <param name="pattern">([0-9]+(\.[0-9]*)?|\.[0-9]+)((cm)|(mm)|(in)|(pt)|(pc)|(px))</param>
+
+    </data>
+</define>
+<define name="positiveLength">
+    <data type="string">
+        <param name="pattern">([0-9]*[1-9][0-9]*(\.[0-9]*)?|0+\.[0-9]*[1-9][0-9]*|\.[0-9]*[1-9][0-9]*)((cm)|(mm)|(in)|(pt)|(pc)|(px))</param>
+
+    </data>
+</define>
+<define name="percent">
+    <data type="string">
+        <param name="pattern">-?([0-9]+(\.[0-9]*)?|\.[0-9]+)%</param>
+    </data>
+</define>
+<define name="relativeLength">
+    <data type="string">
+        <param name="pattern">[0-9]+\*</param>
+    </data>
+</define>
+<define name="coordinate">
+    <ref name="length"/>
+</define>
+<define name="distance">
+    <ref name="length"/>
+</define>
+<define name="color">
+    <data type="string">
+        <param name="pattern">#[0-9a-fA-F]{6}</param>
+    </data>
+</define>
+<define name="styleName">
+    <data type="NCName"/>
+</define>
+<define name="styleNameRef">
+    <choice>
+        <data type="NCName"/>
+        <empty/>
+    </choice>
+</define>
+<define name="styleNameRefs">
+    <list>
+        <zeroOrMore>
+            <data type="NCName"/>
+        </zeroOrMore>
+    </list>
+</define>
+<define name="variableName">
+    <data type="string"/>
+</define>
+<define name="formula">
+    <!-- A formula should start with a namespace prefix, -->
+    <!-- but has no restrictions-->
+    <data type="string"/>
+</define>
+
+<define name="targetFrameName">
+    <choice>
+        <value>_self</value>
+        <value>_blank</value>
+        <value>_parent</value>
+        <value>_top</value>
+        <ref name="string"/>
+    </choice>
+</define>
+
+<define name="valueType">
+    <choice>
+        <value>float</value>
+        <value>time</value>
+        <value>date</value>
+        <value>percentage</value>
+        <value>currency</value>
+        <value>boolean</value>
+        <value>string</value>
+    </choice>
+</define>
+
+<define name="points">
+    <data type="string">
+        <param name="pattern">-?[0-9]+,-?[0-9]+([ ]+-?[0-9]+,-?[0-9]+)*</param>
+    </data>
+</define>
+<define name="pathData">
+    <data type="string"/>
+</define>
+
+<define name="vector3D">
+    <data type="string">
+        <param name="pattern">\([ ]*-?([0-9]+(\.[0-9]*)?|\.[0-9]+)([ ]+-?([0-9]+(\.[0-9]*)?|\.[0-9]+)){2}[ ]*\)</param>
+
+    </data>
+</define>
+
+<define name="namespacedToken">
+    <data type="string">
+        <param name="pattern">[0-9a-zA-Z_]+:[0-9a-zA-Z._\-]+</param>
+    </data>
+</define>
+<define name="anyAttListOrElements">
+    <zeroOrMore>
+        <attribute>
+            <anyName/>
+            <text/>
+        </attribute>
+    </zeroOrMore>
+    <ref name="anyElements"/>
+</define>
+<define name="anyElements">
+    <zeroOrMore>
+        <element>
+            <anyName/>
+            <mixed>
+                <ref name="anyAttListOrElements"/>
+            </mixed>
+        </element>
+    </zeroOrMore>
+</define>
+</grammar>
diff --git a/generator/schema2template/src/main/resources/examples/odf/odf-schemas/OpenDocument-strict-schema-v1.1.rng b/generator/schema2template/src/main/resources/examples/odf/odf-schemas/OpenDocument-strict-schema-v1.1.rng
new file mode 100644
index 0000000..e77fe4b
--- /dev/null
+++ b/generator/schema2template/src/main/resources/examples/odf/odf-schemas/OpenDocument-strict-schema-v1.1.rng
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    OASIS OpenDocument v1.1
+    OASIS Standard, 1 Feb 2007
+    Strict Relax-NG Schema
+
+    $Id$
+
+    © 2002-2007 OASIS Open
+    © 1999-2007 Sun Microsystems, Inc.
+-->
+
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+    <include href="OpenDocument-schema-v1.1.rng">
+        <define name="office-meta-content">
+            <ref name="office-meta-content-strict"/>
+        </define>
+        <define name="style-page-layout-properties-content">
+            <ref name="style-page-layout-properties-content-strict"/>
+        </define>
+        <define name="style-header-footer-properties-content">
+            <ref name="style-header-footer-properties-content-strict"/>
+        </define>
+        <define name="style-drawing-page-properties-content">
+            <ref name="style-drawing-page-properties-content-strict"/>
+        </define>
+        <define name="style-text-properties-content">
+            <ref name="style-text-properties-content-strict"/>
+        </define>
+        <define name="style-paragraph-properties-content">
+            <ref name="style-paragraph-properties-content-strict"/>
+        </define>
+        <define name="style-ruby-properties-content">
+            <ref name="style-ruby-properties-content-strict"/>
+        </define>
+        <define name="style-section-properties-content">
+            <ref name="style-section-properties-content-strict"/>
+        </define>
+        <define name="style-list-level-properties-content">
+            <ref name="style-list-level-properties-content-strict"/>
+        </define>
+        <define name="style-table-properties-content">
+            <ref name="style-table-properties-content-strict"/>
+        </define>
+        <define name="style-table-column-properties-content">
+            <ref name="style-table-column-properties-content-strict"/>
+        </define>
+        <define name="style-table-row-properties-content">
+            <ref name="style-table-row-properties-content-strict"/>
+        </define>
+        <define name="style-table-cell-properties-content">
+            <ref name="style-table-cell-properties-content-strict"/>
+        </define>
+        <define name="style-graphic-properties-content">
+            <ref name="style-graphic-properties-content-strict"/>
+        </define>
+        <define name="style-chart-properties-content">
+            <ref name="style-chart-properties-content-strict"/>
+        </define>
+    </include>
+</grammar>
diff --git a/generator/schema2template/src/main/resources/examples/odf/odf-schemas/OpenDocument-v1.2-os-dsig-schema.rng b/generator/schema2template/src/main/resources/examples/odf/odf-schemas/OpenDocument-v1.2-os-dsig-schema.rng
new file mode 100644
index 0000000..baab699
--- /dev/null
+++ b/generator/schema2template/src/main/resources/examples/odf/odf-schemas/OpenDocument-v1.2-os-dsig-schema.rng
@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+        Open Document Format for Office Applications (OpenDocument) Version 1.2
+        OASIS Standard, 29 September 2011
+	Digital Signatures Relax-NG Schema
+        Source: http://docs.oasis-open.org/office/v1.2/os/
+        Copyright (c) OASIS Open 2002-2011. All Rights Reserved.
+
+	All capitalized terms in the following text have the meanings assigned to them
+   	in the OASIS Intellectual Property Rights Policy (the "OASIS IPR Policy"). The
+	full Policy may be found at the OASIS website.
+
+	This document and translations of it may be copied and furnished to others, and
+	derivative works that comment on or otherwise explain it or assist in its
+	implementation may be prepared, copied, published, and distributed, in whole or
+	in part, without restriction of any kind, provided that the above copyright
+	notice and this section are included on all such copies and derivative works.
+	However, this document itself may not be modified in any way, including by
+	removing the copyright notice or references to OASIS, except as needed for the
+	purpose of developing any document or deliverable produced by an OASIS
+	Technical Committee (in which case the rules applicable to copyrights, as set
+	forth in the OASIS IPR Policy, must be followed) or as required to translate it
+	into languages other than English.
+
+	The limited permissions granted above are perpetual and will not be revoked by
+	OASIS or its successors or assigns.
+
+	This document and the information contained herein is provided on an "AS IS"
+	basis and OASIS DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT
+	LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT
+	INFRINGE ANY OWNERSHIP RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR
+	FITNESS FOR A PARTICULAR PURPOSE. 
+-->
+
+<grammar
+	xmlns="http://relaxng.org/ns/structure/1.0"
+
+	datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"
+
+	xmlns:dsig="urn:oasis:names:tc:opendocument:xmlns:digitalsignature:1.0"
+	xmlns:ds="http://www.w3.org/2000/09/xmldsig#"
+>
+<start>
+	<choice>
+		<ref name="dsig-document-signatures"/>
+	</choice>
+</start>
+<define name="dsig-document-signatures">
+	<element name="dsig:document-signatures">
+		<ref name="dsig-document-signatures-attlist"/>
+		<oneOrMore>
+			<ref name="ds-signature"/>
+		</oneOrMore>
+	</element>
+</define>
+<define name="dsig-document-signatures-attlist">
+	<attribute name="dsig:version">
+		<value>1.2</value>
+	</attribute>
+</define>
+<define name="ds-signature">
+	<element name="ds:Signature">
+		<!-- The permitted content of this element is the permitted -->
+		<!-- content of the Signature element defined by W3C XML    -->
+		<!-- Signature Syntax and Processing (Second Edition).      -->
+		<!-- See OpenDocument v1.2 part 3, section 4.3.             -->
+		<ref name="dsMarkup"/>
+	</element>
+</define>
+<define name="dsMarkup">
+	<zeroOrMore>
+		<choice>
+			<attribute>
+				<anyName/>
+			</attribute>
+			<text/>
+			<element>
+				<anyName/>
+				<ref name="dsMarkup"/>
+			</element>
+		</choice>
+	</zeroOrMore>
+</define>
+</grammar>
diff --git a/generator/schema2template/src/main/resources/examples/odf/odf-schemas/OpenDocument-v1.2-os-manifest-schema.rng b/generator/schema2template/src/main/resources/examples/odf/odf-schemas/OpenDocument-v1.2-os-manifest-schema.rng
new file mode 100644
index 0000000..af13a26
--- /dev/null
+++ b/generator/schema2template/src/main/resources/examples/odf/odf-schemas/OpenDocument-v1.2-os-manifest-schema.rng
@@ -0,0 +1,224 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+        Open Document Format for Office Applications (OpenDocument) Version 1.2
+        OASIS Standard, 29 September 2011
+	Manifest Relax-NG Schema
+        Source: http://docs.oasis-open.org/office/v1.2/os/
+        Copyright (c) OASIS Open 2002-2011. All Rights Reserved.
+
+	All capitalized terms in the following text have the meanings assigned to them
+   	in the OASIS Intellectual Property Rights Policy (the "OASIS IPR Policy"). The
+	full Policy may be found at the OASIS website.
+
+	This document and translations of it may be copied and furnished to others, and
+	derivative works that comment on or otherwise explain it or assist in its
+	implementation may be prepared, copied, published, and distributed, in whole or
+	in part, without restriction of any kind, provided that the above copyright
+	notice and this section are included on all such copies and derivative works.
+	However, this document itself may not be modified in any way, including by
+	removing the copyright notice or references to OASIS, except as needed for the
+	purpose of developing any document or deliverable produced by an OASIS
+	Technical Committee (in which case the rules applicable to copyrights, as set
+	forth in the OASIS IPR Policy, must be followed) or as required to translate it
+	into languages other than English.
+
+	The limited permissions granted above are perpetual and will not be revoked by
+	OASIS or its successors or assigns.
+
+	This document and the information contained herein is provided on an "AS IS"
+	basis and OASIS DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT
+	LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT
+	INFRINGE ANY OWNERSHIP RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR
+	FITNESS FOR A PARTICULAR PURPOSE. 
+-->
+<grammar 
+	xmlns="http://relaxng.org/ns/structure/1.0"
+
+	datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"
+
+	xmlns:manifest="urn:oasis:names:tc:opendocument:xmlns:manifest:1.0"
+>
+<start>
+	<choice>
+		<ref name="manifest"/>
+	</choice>
+</start>
+<define name="manifest">
+	<element name="manifest:manifest">
+		<ref name="manifest-attlist"/>
+		<oneOrMore>
+			<ref name="file-entry"/>
+		</oneOrMore>
+	</element>
+</define>
+<define name="manifest-attlist">
+	<attribute name="manifest:version">
+		<value>1.2</value>
+	</attribute>
+</define>
+<define name="file-entry">
+	<element name="manifest:file-entry">
+		<ref name="file-entry-attlist"/>
+		<optional>
+			<ref name="encryption-data"/>
+		</optional>
+	</element>
+</define>
+<define name="file-entry-attlist">
+  <interleave>
+	<attribute name="manifest:full-path">
+		<ref name="string"/>
+	</attribute>
+	<optional>
+		<attribute name="manifest:size">
+			<ref name="nonNegativeInteger"/>
+		</attribute>
+	</optional>
+	<attribute name="manifest:media-type">
+		<ref name="string"/>
+	</attribute>
+	<optional>
+		<attribute name="manifest:preferred-view-mode">
+			<choice>
+				<value>edit</value>
+				<value>presentation-slide-show</value>
+				<value>read-only</value>
+				<ref name="namespacedToken"/> 
+			</choice> 
+		</attribute> 
+	</optional> 
+	<optional>
+		<attribute name="manifest:version">
+			<ref name="string"/>
+		</attribute>
+	</optional>
+  </interleave>
+</define>
+
+<define name="encryption-data">
+	<element name="manifest:encryption-data">
+		<ref name="encryption-data-attlist"/>
+		<ref name="algorithm"/>
+		<optional>
+			<ref name="start-key-generation"/>
+		</optional>
+		<ref name="key-derivation"/>
+	</element>
+</define>
+<define name="encryption-data-attlist">
+  <interleave>
+	<attribute name="manifest:checksum-type">
+		<choice>
+			<value>SHA1/1K</value>
+			<ref name="anyURI"/>
+		</choice>
+	</attribute>
+	<attribute name="manifest:checksum">
+		<ref name="base64Binary"/>
+	</attribute>
+  </interleave>
+</define>
+<define name="algorithm">
+	<element name="manifest:algorithm">
+		<ref name="algorithm-attlist"/>
+		<ref name="anyElements"/>
+	</element>
+</define>
+<define name="algorithm-attlist">
+  <interleave>
+	<attribute name="manifest:algorithm-name">
+		<choice>
+			<value>Blowfish CFB</value>
+			<ref name="anyURI"/>
+		</choice>
+	</attribute>
+	<attribute name="manifest:initialisation-vector">
+		<ref name="base64Binary"/>
+	</attribute>
+  </interleave>
+</define>
+<define name="anyAttListOrElements">
+	<zeroOrMore>
+		<attribute>
+			<anyName/>
+			<text/>
+		</attribute>
+	</zeroOrMore>
+	<ref name="anyElements"/>
+</define>
+<define name="anyElements">
+	<zeroOrMore>
+		<element>
+			<anyName/>
+			<mixed>
+				<ref name="anyAttListOrElements"/>
+			</mixed>
+		</element>
+	</zeroOrMore>
+</define>
+<define name="key-derivation">
+	<element name="manifest:key-derivation">
+		<ref name="key-derivation-attlist"/>
+		<empty/>
+	</element>
+</define>
+<define name="key-derivation-attlist">
+  <interleave>
+	<attribute name="manifest:key-derivation-name">
+		<choice>
+			<value>PBKDF2</value>
+			<ref name="anyURI"/>
+		</choice>
+	</attribute>
+	<attribute name="manifest:salt">
+		<ref name="base64Binary"/>
+	</attribute>
+	<attribute name="manifest:iteration-count">
+			<ref name="nonNegativeInteger"/>
+		</attribute>
+	<optional>
+		<attribute name="manifest:key-size">
+			<ref name="nonNegativeInteger"/>
+		</attribute>
+	</optional>
+  </interleave>
+</define>
+<define name="start-key-generation">
+	<element name="manifest:start-key-generation">
+		<ref name="start-key-generation-attlist"/>
+		<empty/>
+	</element>
+</define>
+<define name="start-key-generation-attlist">
+  <interleave>
+	<attribute name="manifest:start-key-generation-name">
+		<choice>
+			<value>SHA1</value>
+			<ref name="anyURI"/>
+		</choice>
+	</attribute>
+	<optional>
+		<attribute name="manifest:key-size">
+			<ref name="nonNegativeInteger"/>
+		</attribute>
+	</optional>
+  </interleave>
+</define>
+<define name="base64Binary">
+	<data type="base64Binary"/>
+</define>
+<define name="namespacedToken">
+	<data type="QName">
+		<param name="pattern">[^:]+:[^:]+</param>
+	</data>
+</define>
+<define name="nonNegativeInteger">
+	<data type="nonNegativeInteger"/>
+</define>
+<define name="string">
+	<data type="string"/>
+</define>
+<define name="anyURI">
+	<data type="anyURI"/>
+</define>
+</grammar>
diff --git a/generator/schema2template/src/main/resources/examples/odf/odf-schemas/OpenDocument-v1.2-os-metadata.owl b/generator/schema2template/src/main/resources/examples/odf/odf-schemas/OpenDocument-v1.2-os-metadata.owl
new file mode 100644
index 0000000..a1eff11
--- /dev/null
+++ b/generator/schema2template/src/main/resources/examples/odf/odf-schemas/OpenDocument-v1.2-os-metadata.owl
@@ -0,0 +1,86 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+        Open Document Format for Office Applications (OpenDocument) Version 1.2
+        OASIS Standard, 29 September 2011
+	OWL Metadata Manifest Description
+        Source: http://docs.oasis-open.org/office/v1.2/os/
+        Copyright (c) OASIS Open 2002-2011. All Rights Reserved.
+
+	All capitalized terms in the following text have the meanings assigned to them
+   	in the OASIS Intellectual Property Rights Policy (the "OASIS IPR Policy"). The
+	full Policy may be found at the OASIS website.
+
+	This document and translations of it may be copied and furnished to others, and
+	derivative works that comment on or otherwise explain it or assist in its
+	implementation may be prepared, copied, published, and distributed, in whole or
+	in part, without restriction of any kind, provided that the above copyright
+	notice and this section are included on all such copies and derivative works.
+	However, this document itself may not be modified in any way, including by
+	removing the copyright notice or references to OASIS, except as needed for the
+	purpose of developing any document or deliverable produced by an OASIS
+	Technical Committee (in which case the rules applicable to copyrights, as set
+	forth in the OASIS IPR Policy, must be followed) or as required to translate it
+	into languages other than English.
+
+	The limited permissions granted above are perpetual and will not be revoked by
+	OASIS or its successors or assigns.
+
+	This document and the information contained herein is provided on an "AS IS"
+	basis and OASIS DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT
+	LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT
+	INFRINGE ANY OWNERSHIP RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR
+	FITNESS FOR A PARTICULAR PURPOSE. 
+-->
+
+<rdf:RDF
+	xmlns="http://www.w3.org/2000/01/rdf-schema#"
+	xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+	xmlns:owl="http://www.w3.org/2002/07/owl#"
+	xmlns:dc="http://purl.org/dc/elements/1.1/"
+	xmlns:pkg="http://docs.oasis-open.org/ns/office/1.2/meta/pkg#"
+	xmlns:odf="http://docs.oasis-open.org/ns/office/1.2/meta/odf#">
+
+<owl:Ontology rdf:about="http://docs.oasis-open.org/ns/office/1.2/meta/odf#">
+	<owl:imports rdf:resource="http://docs.oasis-open.org/office/v1.2/os/OpenDocument-v1.2-os-package-metadata.owl" />
+	<rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Thing"/>
+	<dc:title xml:lang="en">Open Document Schema Metadata Manifest Ontology</dc:title>
+	<label xml:lang="en">ODF Schema Metadata Manifest</label>
+</owl:Ontology>
+
+<owl:Class rdf:about="http://docs.oasis-open.org/ns/office/1.2/meta/odf#ContentFile">
+	<label xml:lang="en">The OpenDocument Content File</label>
+	<comment xml:lang="en">The unique content.xml from the root path of the document</comment>
+	<subClassOf rdf:resource="http://docs.oasis-open.org/ns/office/1.2/meta/pkg#File"/>
+</owl:Class>
+
+<owl:Class rdf:about="http://docs.oasis-open.org/ns/office/1.2/meta/odf#StylesFile">
+	<label xml:lang="en">The OpenDocument Styles File</label>
+	<comment xml:lang="en">The unique styles.xml from the root path of the document</comment>
+	<subClassOf rdf:resource="http://docs.oasis-open.org/ns/office/1.2/meta/pkg#File"/>
+</owl:Class>
+
+<owl:Class rdf:about="http://docs.oasis-open.org/ns/office/1.2/meta/odf#Element">
+	<label xml:lang="en">OpenDocument Package ODF XML Element</label>
+	<subClassOf rdf:resource="http://docs.oasis-open.org/ns/office/1.2/meta/pkg#Element"/>
+</owl:Class>
+
+<owl:Class rdf:about="urn:oasis:names:tc:opendocument:xmlns:text:1.0meta-field">
+	<label xml:lang="en">OpenDocument Meta field Element</label>
+	<subClassOf rdf:resource="http://docs.oasis-open.org/ns/office/1.2/meta/odf#Element"/>
+</owl:Class>
+
+<owl:DatatypeProperty rdf:about="http://docs.oasis-open.org/ns/office/1.2/meta/odf#prefix">
+	<rdf:type rdf:resource="http://www.w3.org/2002/07/owl#FunctionalProperty"/>
+	<domain rdf:resource="urn:oasis:names:tc:opendocument:xmlns:text:1.0meta-field"/>
+	<range rdf:resource="http://www.w3.org/2001/XMLSchema-datatypes#string"/>
+	<label xml:lang="en">has prefix</label>
+</owl:DatatypeProperty>
+
+<owl:DatatypeProperty rdf:about="http://docs.oasis-open.org/ns/office/1.2/meta/odf#suffix">
+	<rdf:type rdf:resource="http://www.w3.org/2002/07/owl#FunctionalProperty"/>
+	<domain rdf:resource="urn:oasis:names:tc:opendocument:xmlns:text:1.0meta-field"/>
+	<range rdf:resource="http://www.w3.org/2001/XMLSchema-datatypes#string"/>
+	<label xml:lang="en">has suffix</label>
+</owl:DatatypeProperty>
+</rdf:RDF>
+
diff --git a/generator/schema2template/src/main/resources/examples/odf/odf-schemas/OpenDocument-v1.2-os-package-metadata.owl b/generator/schema2template/src/main/resources/examples/odf/odf-schemas/OpenDocument-v1.2-os-package-metadata.owl
new file mode 100644
index 0000000..2416955
--- /dev/null
+++ b/generator/schema2template/src/main/resources/examples/odf/odf-schemas/OpenDocument-v1.2-os-package-metadata.owl
@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+        Open Document Format for Office Applications (OpenDocument) Version 1.2
+        OASIS Standard, 29 September 2011
+	OWL Metadata Manifest Description
+        Source: http://docs.oasis-open.org/office/v1.2/os/
+        Copyright (c) OASIS Open 2002-2011. All Rights Reserved.
+
+	All capitalized terms in the following text have the meanings assigned to them
+   	in the OASIS Intellectual Property Rights Policy (the "OASIS IPR Policy"). The
+	full Policy may be found at the OASIS website.
+
+	This document and translations of it may be copied and furnished to others, and
+	derivative works that comment on or otherwise explain it or assist in its
+	implementation may be prepared, copied, published, and distributed, in whole or
+	in part, without restriction of any kind, provided that the above copyright
+	notice and this section are included on all such copies and derivative works.
+	However, this document itself may not be modified in any way, including by
+	removing the copyright notice or references to OASIS, except as needed for the
+	purpose of developing any document or deliverable produced by an OASIS
+	Technical Committee (in which case the rules applicable to copyrights, as set
+	forth in the OASIS IPR Policy, must be followed) or as required to translate it
+	into languages other than English.
+
+	The limited permissions granted above are perpetual and will not be revoked by
+	OASIS or its successors or assigns.
+
+	This document and the information contained herein is provided on an "AS IS"
+	basis and OASIS DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT
+	LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT
+	INFRINGE ANY OWNERSHIP RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR
+	FITNESS FOR A PARTICULAR PURPOSE. 
+-->
+
+<rdf:RDF
+	xmlns="http://www.w3.org/2000/01/rdf-schema#"
+	xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+	xmlns:owl="http://www.w3.org/2002/07/owl#"
+	xmlns:dc="http://purl.org/dc/elements/1.1/"
+	xmlns:pkg="http://docs.oasis-open.org/ns/office/1.2/meta/pkg#">
+
+<owl:Ontology rdf:about="http://docs.oasis-open.org/ns/office/1.2/meta/pkg#">
+	<rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Thing"/>
+	<dc:title xml:lang="en">Open Document Package Metadata Manifest Ontology</dc:title>
+	<label xml:lang="en">ODF Package Metadata Manifest</label>
+</owl:Ontology>
+
+<owl:Class rdf:about="http://docs.oasis-open.org/ns/office/1.2/meta/pkg#Document">
+	<label xml:lang="en">OpenDocument Document</label>
+</owl:Class>
+
+<owl:Class rdf:about="http://docs.oasis-open.org/ns/office/1.2/meta/pkg#File">
+	<label xml:lang="en"> OpenDocument Document Package File</label>
+</owl:Class>
+
+<owl:ObjectProperty rdf:about="http://docs.oasis-open.org/ns/office/1.2/meta/pkg#hasPart">
+	<domain rdf:resource="http://docs.oasis-open.org/ns/office/1.2/meta/pkg#Document"/>
+	<range rdf:resource="http://docs.oasis-open.org/ns/office/1.2/meta/pkg#File"/>
+	<label xml:lang="en">contains</label>
+	<comment xml:lang="en">Related to dcterms:hasPart of the Dublin Core Metadata Initiative</comment>
+</owl:ObjectProperty>
+
+<owl:Class rdf:about="http://docs.oasis-open.org/ns/office/1.2/meta/pkg#MetadataFile">
+	<label xml:lang="en">An OpenDocument Metadata File</label>
+	<comment xml:lang="en">Used for any metadata file in the document</comment>
+	<subClassOf rdf:resource="http://docs.oasis-open.org/ns/office/1.2/meta/pkg#File"/>
+</owl:Class>
+
+<owl:DatatypeProperty rdf:about="http://docs.oasis-open.org/ns/office/1.2/meta/pkg#mimeType">
+	<rdf:type rdf:resource="http://www.w3.org/2002/07/owl#FunctionalProperty"/>
+	<domain rdf:resource="http://docs.oasis-open.org/ns/office/1.2/meta/pkg#File"/>
+	<range rdf:resource="http://www.w3.org/2001/XMLSchema-datatypes#string"/>
+	<label xml:lang="en">the MIME type</label>
+	<comment xml:lang="en">A string representing the MIME media type of a file (see RFC4288).</comment>
+</owl:DatatypeProperty>
+
+<owl:Class rdf:about="http://docs.oasis-open.org/ns/office/1.2/meta/pkg#Element">
+	<label xml:lang="en">OpenDocument Package XML Element</label>
+</owl:Class>
+
+</rdf:RDF>
diff --git a/generator/schema2template/src/main/resources/examples/odf/odf-schemas/OpenDocument-v1.2-os-schema.rng b/generator/schema2template/src/main/resources/examples/odf/odf-schemas/OpenDocument-v1.2-os-schema.rng
new file mode 100644
index 0000000..538c335
--- /dev/null
+++ b/generator/schema2template/src/main/resources/examples/odf/odf-schemas/OpenDocument-v1.2-os-schema.rng
@@ -0,0 +1,18127 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+        Open Document Format for Office Applications (OpenDocument) Version 1.2
+        OASIS Standard, 29 September 2011
+	Relax-NG Schema
+        Source: http://docs.oasis-open.org/office/v1.2/os/
+        Copyright (c) OASIS Open 2002-2011. All Rights Reserved.
+
+	All capitalized terms in the following text have the meanings assigned to them
+	in the OASIS Intellectual Property Rights Policy (the "OASIS IPR Policy"). The
+	full Policy may be found at the OASIS website.
+
+	This document and translations of it may be copied and furnished to others, and
+	derivative works that comment on or otherwise explain it or assist in its
+	implementation may be prepared, copied, published, and distributed, in whole or
+	in part, without restriction of any kind, provided that the above copyright
+	notice and this section are included on all such copies and derivative works.
+	However, this document itself may not be modified in any way, including by
+	removing the copyright notice or references to OASIS, except as needed for the
+	purpose of developing any document or deliverable produced by an OASIS
+	Technical Committee (in which case the rules applicable to copyrights, as set
+	forth in the OASIS IPR Policy, must be followed) or as required to translate it
+	into languages other than English.
+
+	The limited permissions granted above are perpetual and will not be revoked by
+	OASIS or its successors or assigns.
+
+	This document and the information contained herein is provided on an "AS IS"
+	basis and OASIS DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT
+	LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT
+	INFRINGE ANY OWNERSHIP RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR
+	FITNESS FOR A PARTICULAR PURPOSE. 
+-->
+<grammar
+	xmlns="http://relaxng.org/ns/structure/1.0"
+
+	datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"
+
+	xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0"
+	xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0"
+	xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0"
+	xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
+	xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0"
+	xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"
+	xmlns:presentation="urn:oasis:names:tc:opendocument:xmlns:presentation:1.0"
+	xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0"
+	xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0"
+	xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0"
+	xmlns:db="urn:oasis:names:tc:opendocument:xmlns:database:1.0"
+	xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0"
+	xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0"
+	xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0"
+	xmlns:anim="urn:oasis:names:tc:opendocument:xmlns:animation:1.0"
+
+	xmlns:dc="http://purl.org/dc/elements/1.1/"
+	xmlns:xlink="http://www.w3.org/1999/xlink"
+	xmlns:math="http://www.w3.org/1998/Math/MathML"
+	xmlns:xforms="http://www.w3.org/2002/xforms"
+	xmlns:grddl="http://www.w3.org/2003/g/data-view#"
+	xmlns:xhtml="http://www.w3.org/1999/xhtml"
+
+	xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0"
+	xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0"
+	xmlns:smil="urn:oasis:names:tc:opendocument:xmlns:smil-compatible:1.0"
+>
+	<define name="office-process-content">
+		<optional>
+			<attribute name="office:process-content">
+				<ref name="boolean"/>
+			</attribute>
+		</optional>
+	</define>
+	<start>
+		<choice>
+			<ref name="office-document"/>
+			<ref name="office-document-content"/>
+			<ref name="office-document-styles"/>
+			<ref name="office-document-meta"/>
+			<ref name="office-document-settings"/>
+		</choice>
+	</start>
+	<define name="office-document">
+		<element name="office:document">
+			<ref name="office-document-attrs"/>
+			<ref name="office-document-common-attrs"/>
+			<ref name="office-meta"/>
+			<ref name="office-settings"/>
+			<ref name="office-scripts"/>
+			<ref name="office-font-face-decls"/>
+			<ref name="office-styles"/>
+			<ref name="office-automatic-styles"/>
+			<ref name="office-master-styles"/>
+			<ref name="office-body"/>
+		</element>
+	</define>
+	<define name="office-document-content">
+		<element name="office:document-content">
+			<ref name="office-document-common-attrs"/>
+			<ref name="office-scripts"/>
+			<ref name="office-font-face-decls"/>
+			<ref name="office-automatic-styles"/>
+			<ref name="office-body"/>
+		</element>
+	</define>
+	<define name="office-document-styles">
+		<element name="office:document-styles">
+			<ref name="office-document-common-attrs"/>
+			<ref name="office-font-face-decls"/>
+			<ref name="office-styles"/>
+			<ref name="office-automatic-styles"/>
+			<ref name="office-master-styles"/>
+		</element>
+	</define>
+	<define name="office-document-meta">
+		<element name="office:document-meta">
+			<ref name="office-document-common-attrs"/>
+			<ref name="office-meta"/>
+		</element>
+	</define>
+	<define name="office-document-settings">
+		<element name="office:document-settings">
+			<ref name="office-document-common-attrs"/>
+			<ref name="office-settings"/>
+		</element>
+	</define>
+	<define name="office-document-common-attrs">
+		<interleave>
+			<attribute name="office:version">
+				<value>1.2</value>
+			</attribute>
+			<optional>
+				<attribute name="grddl:transformation">
+					<list>
+						<zeroOrMore>
+							<ref name="anyIRI"/>
+						</zeroOrMore>
+					</list>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="office-document-attrs">
+		<attribute name="office:mimetype">
+			<ref name="string"/>
+		</attribute>
+	</define>
+	<define name="office-meta">
+		<optional>
+			<element name="office:meta">
+				<ref name="office-meta-content-strict"/>
+			</element>
+		</optional>
+	</define>
+	<define name="office-meta-content-strict">
+		<zeroOrMore>
+			<ref name="office-meta-data"/>
+		</zeroOrMore>
+	</define>
+	<define name="office-body">
+		<element name="office:body">
+			<ref name="office-body-content"/>
+		</element>
+	</define>
+	<define name="office-body-content">
+		<choice>
+			<element name="office:text">
+				<ref name="office-text-attlist"/>
+				<ref name="office-text-content-prelude"/>
+				<ref name="office-text-content-main"/>
+				<ref name="office-text-content-epilogue"/>
+			</element>
+			<element name="office:drawing">
+				<ref name="office-drawing-attlist"/>
+				<ref name="office-drawing-content-prelude"/>
+				<ref name="office-drawing-content-main"/>
+				<ref name="office-drawing-content-epilogue"/>
+			</element>
+			<element name="office:presentation">
+				<ref name="office-presentation-attlist"/>
+				<ref name="office-presentation-content-prelude"/>
+				<ref name="office-presentation-content-main"/>
+				<ref name="office-presentation-content-epilogue"/>
+			</element>
+			<element name="office:spreadsheet">
+				<ref name="office-spreadsheet-attlist"/>
+				<ref name="office-spreadsheet-content-prelude"/>
+				<ref name="office-spreadsheet-content-main"/>
+				<ref name="office-spreadsheet-content-epilogue"/>
+			</element>
+			<element name="office:chart">
+				<ref name="office-chart-attlist"/>
+				<ref name="office-chart-content-prelude"/>
+				<ref name="office-chart-content-main"/>
+				<ref name="office-chart-content-epilogue"/>
+			</element>
+			<element name="office:image">
+				<ref name="office-image-attlist"/>
+				<ref name="office-image-content-prelude"/>
+				<ref name="office-image-content-main"/>
+				<ref name="office-image-content-epilogue"/>
+			</element>
+			<ref name="office-database"/>
+		</choice>
+	</define>
+	<define name="office-text-content-prelude">
+		<ref name="office-forms"/>
+		<ref name="text-tracked-changes"/>
+		<ref name="text-decls"/>
+		<ref name="table-decls"/>
+	</define>
+	<define name="office-text-content-main">
+		<choice>
+			<zeroOrMore>
+				<ref name="text-content"/>
+			</zeroOrMore>
+			<group>
+				<ref name="text-page-sequence"/>
+				<zeroOrMore>
+					<choice>
+						<ref name="shape"/>
+					</choice>
+				</zeroOrMore>
+			</group>
+		</choice>
+	</define>
+	<define name="text-content">
+		<choice>
+			<ref name="text-h"/>
+			<ref name="text-p"/>
+			<ref name="text-list"/>
+			<ref name="text-numbered-paragraph"/>
+			<ref name="table-table"/>
+			<ref name="text-section"/>
+			<ref name="text-soft-page-break"/>
+			<ref name="text-table-of-content"/>
+			<ref name="text-illustration-index"/>
+			<ref name="text-table-index"/>
+			<ref name="text-object-index"/>
+			<ref name="text-user-index"/>
+			<ref name="text-alphabetical-index"/>
+			<ref name="text-bibliography"/>
+			<ref name="shape"/>
+			<ref name="change-marks"/>
+		</choice>
+	</define>
+	<define name="office-text-content-epilogue">
+		<ref name="table-functions"/>
+	</define>
+	<define name="office-text-attlist">
+		<interleave>
+			<optional>
+				<attribute name="text:global">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:use-soft-page-breaks">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="office-drawing-attlist">
+		<empty/>
+	</define>
+	<define name="office-drawing-content-prelude">
+		<ref name="text-decls"/>
+		<ref name="table-decls"/>
+	</define>
+	<define name="office-drawing-content-main">
+		<zeroOrMore>
+			<ref name="draw-page"/>
+		</zeroOrMore>
+	</define>
+	<define name="office-drawing-content-epilogue">
+		<ref name="table-functions"/>
+	</define>
+	<define name="office-presentation-attlist">
+		<empty/>
+	</define>
+	<define name="office-presentation-content-prelude">
+		<ref name="text-decls"/>
+		<ref name="table-decls"/>
+		<ref name="presentation-decls"/>
+	</define>
+	<define name="office-presentation-content-main">
+		<zeroOrMore>
+			<ref name="draw-page"/>
+		</zeroOrMore>
+	</define>
+	<define name="office-presentation-content-epilogue">
+		<ref name="presentation-settings"/>
+		<ref name="table-functions"/>
+	</define>
+	<define name="office-spreadsheet-content-prelude">
+		<optional>
+			<ref name="table-tracked-changes"/>
+		</optional>
+		<ref name="text-decls"/>
+		<ref name="table-decls"/>
+	</define>
+	<define name="table-decls">
+		<optional>
+			<ref name="table-calculation-settings"/>
+		</optional>
+		<optional>
+			<ref name="table-content-validations"/>
+		</optional>
+		<optional>
+			<ref name="table-label-ranges"/>
+		</optional>
+	</define>
+	<define name="office-spreadsheet-content-main">
+		<zeroOrMore>
+			<ref name="table-table"/>
+		</zeroOrMore>
+	</define>
+	<define name="office-spreadsheet-content-epilogue">
+		<ref name="table-functions"/>
+	</define>
+	<define name="table-functions">
+		<optional>
+			<ref name="table-named-expressions"/>
+		</optional>
+		<optional>
+			<ref name="table-database-ranges"/>
+		</optional>
+		<optional>
+			<ref name="table-data-pilot-tables"/>
+		</optional>
+		<optional>
+			<ref name="table-consolidation"/>
+		</optional>
+		<optional>
+			<ref name="table-dde-links"/>
+		</optional>
+	</define>
+	<define name="office-chart-attlist">
+		<empty/>
+	</define>
+	<define name="office-chart-content-prelude">
+		<ref name="text-decls"/>
+		<ref name="table-decls"/>
+	</define>
+	<define name="office-chart-content-main">
+		<ref name="chart-chart"/>
+	</define>
+	<define name="office-chart-content-epilogue">
+		<ref name="table-functions"/>
+	</define>
+	<define name="office-image-attlist">
+		<empty/>
+	</define>
+	<define name="office-image-content-prelude">
+		<empty/>
+	</define>
+	<define name="office-image-content-main">
+		<ref name="draw-frame"/>
+	</define>
+	<define name="office-image-content-epilogue">
+		<empty/>
+	</define>
+	<define name="office-settings">
+		<optional>
+			<element name="office:settings">
+				<oneOrMore>
+					<ref name="config-config-item-set"/>
+				</oneOrMore>
+			</element>
+		</optional>
+	</define>
+	<define name="config-config-item-set">
+		<element name="config:config-item-set">
+			<ref name="config-config-item-set-attlist"/>
+			<ref name="config-items"/>
+		</element>
+	</define>
+	<define name="config-items">
+		<oneOrMore>
+			<choice>
+				<ref name="config-config-item"/>
+				<ref name="config-config-item-set"/>
+				<ref name="config-config-item-map-named"/>
+				<ref name="config-config-item-map-indexed"/>
+			</choice>
+		</oneOrMore>
+	</define>
+	<define name="config-config-item-set-attlist">
+		<attribute name="config:name">
+			<ref name="string"/>
+		</attribute>
+	</define>
+	<define name="config-config-item">
+		<element name="config:config-item">
+			<ref name="config-config-item-attlist"/>
+			<text/>
+		</element>
+	</define>
+	<define name="config-config-item-attlist">
+		<interleave>
+			<attribute name="config:name">
+				<ref name="string"/>
+			</attribute>
+			<attribute name="config:type">
+				<choice>
+					<value>boolean</value>
+					<value>short</value>
+					<value>int</value>
+					<value>long</value>
+					<value>double</value>
+					<value>string</value>
+					<value>datetime</value>
+					<value>base64Binary</value>
+				</choice>
+			</attribute>
+		</interleave>
+	</define>
+	<define name="config-config-item-map-indexed">
+		<element name="config:config-item-map-indexed">
+			<ref name="config-config-item-map-indexed-attlist"/>
+			<oneOrMore>
+				<ref name="config-config-item-map-entry"/>
+			</oneOrMore>
+		</element>
+	</define>
+	<define name="config-config-item-map-indexed-attlist">
+		<attribute name="config:name">
+			<ref name="string"/>
+		</attribute>
+	</define>
+	<define name="config-config-item-map-entry">
+		<element name="config:config-item-map-entry">
+			<ref name="config-config-item-map-entry-attlist"/>
+			<ref name="config-items"/>
+		</element>
+	</define>
+	<define name="config-config-item-map-entry-attlist">
+		<optional>
+			<attribute name="config:name">
+				<ref name="string"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="config-config-item-map-named">
+		<element name="config:config-item-map-named">
+			<ref name="config-config-item-map-named-attlist"/>
+			<oneOrMore>
+				<ref name="config-config-item-map-entry"/>
+			</oneOrMore>
+		</element>
+	</define>
+	<define name="config-config-item-map-named-attlist">
+		<attribute name="config:name">
+			<ref name="string"/>
+		</attribute>
+	</define>
+	<define name="office-scripts">
+		<optional>
+			<element name="office:scripts">
+				<zeroOrMore>
+					<ref name="office-script"/>
+				</zeroOrMore>
+				<optional>
+					<ref name="office-event-listeners"/>
+				</optional>
+			</element>
+		</optional>
+	</define>
+	<define name="office-script">
+		<element name="office:script">
+			<ref name="office-script-attlist"/>
+			<mixed>
+				<ref name="anyElements"/>
+			</mixed>
+		</element>
+	</define>
+	<define name="office-script-attlist">
+		<attribute name="script:language">
+			<ref name="string"/>
+		</attribute>
+	</define>
+	<define name="office-font-face-decls">
+		<optional>
+			<element name="office:font-face-decls">
+				<zeroOrMore>
+					<ref name="style-font-face"/>
+				</zeroOrMore>
+			</element>
+		</optional>
+	</define>
+	<define name="office-styles">
+		<optional>
+			<element name="office:styles">
+				<interleave>
+					<ref name="styles"/>
+					<zeroOrMore>
+						<ref name="style-default-style"/>
+					</zeroOrMore>
+					<optional>
+						<ref name="style-default-page-layout"/>
+					</optional>
+					<optional>
+						<ref name="text-outline-style"/>
+					</optional>
+					<zeroOrMore>
+						<ref name="text-notes-configuration"/>
+					</zeroOrMore>
+					<optional>
+						<ref name="text-bibliography-configuration"/>
+					</optional>
+					<optional>
+						<ref name="text-linenumbering-configuration"/>
+					</optional>
+					<zeroOrMore>
+						<ref name="draw-gradient"/>
+					</zeroOrMore>
+					<zeroOrMore>
+						<ref name="svg-linearGradient"/>
+					</zeroOrMore>
+					<zeroOrMore>
+						<ref name="svg-radialGradient"/>
+					</zeroOrMore>
+					<zeroOrMore>
+						<ref name="draw-hatch"/>
+					</zeroOrMore>
+					<zeroOrMore>
+						<ref name="draw-fill-image"/>
+					</zeroOrMore>
+					<zeroOrMore>
+						<ref name="draw-marker"/>
+					</zeroOrMore>
+					<zeroOrMore>
+						<ref name="draw-stroke-dash"/>
+					</zeroOrMore>
+					<zeroOrMore>
+						<ref name="draw-opacity"/>
+					</zeroOrMore>
+					<zeroOrMore>
+						<ref name="style-presentation-page-layout"/>
+					</zeroOrMore>
+					<zeroOrMore>
+						<ref name="table-table-template"/>
+					</zeroOrMore>
+				</interleave>
+			</element>
+		</optional>
+	</define>
+	<define name="office-automatic-styles">
+		<optional>
+			<element name="office:automatic-styles">
+				<interleave>
+					<ref name="styles"/>
+					<zeroOrMore>
+						<ref name="style-page-layout"/>
+					</zeroOrMore>
+				</interleave>
+			</element>
+		</optional>
+	</define>
+	<define name="office-master-styles">
+		<optional>
+			<element name="office:master-styles">
+				<interleave>
+					<zeroOrMore>
+						<ref name="style-master-page"/>
+					</zeroOrMore>
+					<optional>
+						<ref name="style-handout-master"/>
+					</optional>
+					<optional>
+						<ref name="draw-layer-set"/>
+					</optional>
+				</interleave>
+			</element>
+		</optional>
+	</define>
+	<define name="styles">
+		<interleave>
+			<zeroOrMore>
+				<ref name="style-style"/>
+			</zeroOrMore>
+			<zeroOrMore>
+				<ref name="text-list-style"/>
+			</zeroOrMore>
+			<zeroOrMore>
+				<ref name="number-number-style"/>
+			</zeroOrMore>
+			<zeroOrMore>
+				<ref name="number-currency-style"/>
+			</zeroOrMore>
+			<zeroOrMore>
+				<ref name="number-percentage-style"/>
+			</zeroOrMore>
+			<zeroOrMore>
+				<ref name="number-date-style"/>
+			</zeroOrMore>
+			<zeroOrMore>
+				<ref name="number-time-style"/>
+			</zeroOrMore>
+			<zeroOrMore>
+				<ref name="number-boolean-style"/>
+			</zeroOrMore>
+			<zeroOrMore>
+				<ref name="number-text-style"/>
+			</zeroOrMore>
+		</interleave>
+	</define>
+	<define name="office-meta-data">
+		<choice>
+			<element name="meta:generator">
+				<ref name="string"/>
+			</element>
+			<element name="dc:title">
+				<ref name="string"/>
+			</element>
+			<element name="dc:description">
+				<ref name="string"/>
+			</element>
+			<element name="dc:subject">
+				<ref name="string"/>
+			</element>
+			<element name="meta:keyword">
+				<ref name="string"/>
+			</element>
+			<element name="meta:initial-creator">
+				<ref name="string"/>
+			</element>
+			<ref name="dc-creator"/>
+			<element name="meta:printed-by">
+				<ref name="string"/>
+			</element>
+			<element name="meta:creation-date">
+				<ref name="dateTime"/>
+			</element>
+			<ref name="dc-date"/>
+			<element name="meta:print-date">
+				<ref name="dateTime"/>
+			</element>
+			<element name="meta:template">
+				<attribute name="xlink:type">
+					<value>simple</value>
+				</attribute>
+				<attribute name="xlink:href">
+					<ref name="anyIRI"/>
+				</attribute>
+				<optional>
+					<attribute name="xlink:actuate">
+						<value>onRequest</value>
+					</attribute>
+				</optional>
+				<optional>
+					<attribute name="xlink:title">
+						<ref name="string"/>
+					</attribute>
+				</optional>
+				<optional>
+					<attribute name="meta:date">
+						<ref name="dateTime"/>
+					</attribute>
+				</optional>
+			</element>
+			<element name="meta:auto-reload">
+				<optional>
+					<attribute name="xlink:type">
+						<value>simple</value>
+					</attribute>
+					<attribute name="xlink:href">
+						<ref name="anyIRI"/>
+					</attribute>
+					<optional>
+						<attribute name="xlink:show">
+							<value>replace</value>
+						</attribute>
+					</optional>
+					<optional>
+						<attribute name="xlink:actuate">
+							<value>onLoad</value>
+						</attribute>
+					</optional>
+				</optional>
+				<optional>
+					<attribute name="meta:delay">
+						<ref name="duration"/>
+					</attribute>
+				</optional>
+			</element>
+			<element name="meta:hyperlink-behaviour">
+				<optional>
+					<attribute name="office:target-frame-name">
+						<ref name="targetFrameName"/>
+					</attribute>
+				</optional>
+				<optional>
+					<attribute name="xlink:show">
+						<choice>
+							<value>new</value>
+							<value>replace</value>
+						</choice>
+					</attribute>
+				</optional>
+			</element>
+			<element name="dc:language">
+				<ref name="language"/>
+			</element>
+			<element name="meta:editing-cycles">
+				<ref name="nonNegativeInteger"/>
+			</element>
+			<element name="meta:editing-duration">
+				<ref name="duration"/>
+			</element>
+			<element name="meta:document-statistic">
+				<optional>
+					<attribute name="meta:page-count">
+						<ref name="nonNegativeInteger"/>
+					</attribute>
+				</optional>
+				<optional>
+					<attribute name="meta:table-count">
+						<ref name="nonNegativeInteger"/>
+					</attribute>
+				</optional>
+				<optional>
+					<attribute name="meta:draw-count">
+						<ref name="nonNegativeInteger"/>
+					</attribute>
+				</optional>
+				<optional>
+					<attribute name="meta:image-count">
+						<ref name="nonNegativeInteger"/>
+					</attribute>
+				</optional>
+				<optional>
+					<attribute name="meta:ole-object-count">
+						<ref name="nonNegativeInteger"/>
+					</attribute>
+				</optional>
+				<optional>
+					<attribute name="meta:object-count">
+						<ref name="nonNegativeInteger"/>
+					</attribute>
+				</optional>
+				<optional>
+					<attribute name="meta:paragraph-count">
+						<ref name="nonNegativeInteger"/>
+					</attribute>
+				</optional>
+				<optional>
+					<attribute name="meta:word-count">
+						<ref name="nonNegativeInteger"/>
+					</attribute>
+				</optional>
+				<optional>
+					<attribute name="meta:character-count">
+						<ref name="nonNegativeInteger"/>
+					</attribute>
+				</optional>
+				<optional>
+					<attribute name="meta:frame-count">
+						<ref name="nonNegativeInteger"/>
+					</attribute>
+				</optional>
+				<optional>
+					<attribute name="meta:sentence-count">
+						<ref name="nonNegativeInteger"/>
+					</attribute>
+				</optional>
+				<optional>
+					<attribute name="meta:syllable-count">
+						<ref name="nonNegativeInteger"/>
+					</attribute>
+				</optional>
+				<optional>
+					<attribute name="meta:non-whitespace-character-count">
+						<ref name="nonNegativeInteger"/>
+					</attribute>
+				</optional>
+				<optional>
+					<attribute name="meta:row-count">
+						<ref name="nonNegativeInteger"/>
+					</attribute>
+				</optional>
+				<optional>
+					<attribute name="meta:cell-count">
+						<ref name="nonNegativeInteger"/>
+					</attribute>
+				</optional>
+			</element>
+			<element name="meta:user-defined">
+				<attribute name="meta:name">
+					<ref name="string"/>
+				</attribute>
+				<choice>
+					<group>
+						<attribute name="meta:value-type">
+							<value>float</value>
+						</attribute>
+						<ref name="double"/>
+					</group>
+					<group>
+						<attribute name="meta:value-type">
+							<value>date</value>
+						</attribute>
+						<ref name="dateOrDateTime"/>
+					</group>
+					<group>
+						<attribute name="meta:value-type">
+							<value>time</value>
+						</attribute>
+						<ref name="duration"/>
+					</group>
+					<group>
+						<attribute name="meta:value-type">
+							<value>boolean</value>
+						</attribute>
+						<ref name="boolean"/>
+					</group>
+					<group>
+						<attribute name="meta:value-type">
+							<value>string</value>
+						</attribute>
+						<ref name="string"/>
+					</group>
+					<text/>
+				</choice>
+			</element>
+		</choice>
+	</define>
+	<define name="dc-creator">
+		<element name="dc:creator">
+			<ref name="string"/>
+		</element>
+	</define>
+	<define name="dc-date">
+		<element name="dc:date">
+			<ref name="dateTime"/>
+		</element>
+	</define>
+	<define name="text-h">
+		<element name="text:h">
+			<ref name="heading-attrs"/>
+			<ref name="paragraph-attrs"/>
+			<optional>
+				<ref name="text-number"/>
+			</optional>
+			<zeroOrMore>
+				<ref name="paragraph-content-or-hyperlink"/>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="heading-attrs">
+		<interleave>
+			<attribute name="text:outline-level">
+				<ref name="positiveInteger"/>
+			</attribute>
+			<optional>
+				<attribute name="text:restart-numbering">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:start-value">
+					<ref name="nonNegativeInteger"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:is-list-header">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="text-number">
+		<element name="text:number">
+			<ref name="string"/>
+		</element>
+	</define>
+	<define name="text-p">
+		<element name="text:p">
+			<ref name="paragraph-attrs"/>
+			<zeroOrMore>
+				<ref name="paragraph-content-or-hyperlink"/>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="paragraph-attrs">
+		<interleave>
+			<optional>
+				<attribute name="text:style-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:class-names">
+					<ref name="styleNameRefs"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:cond-style-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+			<optional>
+				<group>
+					<ref name="xml-id"/>
+					<optional>
+						<attribute name="text:id">
+							<ref name="NCName"/>
+						</attribute>
+					</optional>
+				</group>
+			</optional>
+			<optional>
+				<ref name="common-in-content-meta-attlist"/>
+			</optional>
+		</interleave>
+	</define>
+	<define name="text-page-sequence">
+		<element name="text:page-sequence">
+			<oneOrMore>
+				<ref name="text-page"/>
+			</oneOrMore>
+		</element>
+	</define>
+	<define name="text-page">
+		<element name="text:page">
+			<ref name="text-page-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="text-page-attlist">
+		<attribute name="text:master-page-name">
+			<ref name="styleNameRef"/>
+		</attribute>
+	</define>
+	<define name="text-list">
+		<element name="text:list">
+			<ref name="text-list-attr"/>
+			<optional>
+				<ref name="text-list-header"/>
+			</optional>
+			<zeroOrMore>
+				<ref name="text-list-item"/>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="text-list-attr">
+		<interleave>
+			<optional>
+				<attribute name="text:style-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:continue-numbering">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:continue-list">
+					<ref name="IDREF"/>
+				</attribute>
+			</optional>
+			<optional>
+				<ref name="xml-id"/>
+			</optional>
+		</interleave>
+	</define>
+	<define name="text-list-item">
+		<element name="text:list-item">
+			<ref name="text-list-item-attr"/>
+			<ref name="text-list-item-content"/>
+		</element>
+	</define>
+	<define name="text-list-item-content">
+		<optional>
+			<ref name="text-number"/>
+		</optional>
+		<zeroOrMore>
+			<choice>
+				<ref name="text-p"/>
+				<ref name="text-h"/>
+				<ref name="text-list"/>
+				<ref name="text-soft-page-break"/>
+			</choice>
+		</zeroOrMore>
+	</define>
+	<define name="text-list-item-attr">
+		<interleave>
+			<optional>
+				<attribute name="text:start-value">
+					<ref name="nonNegativeInteger"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:style-override">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+			<optional>
+				<ref name="xml-id"/>
+			</optional>
+		</interleave>
+	</define>
+	<define name="text-list-header">
+		<element name="text:list-header">
+			<ref name="text-list-header-attr"/>
+			<ref name="text-list-item-content"/>
+		</element>
+	</define>
+	<define name="text-list-header-attr">
+		<optional>
+			<ref name="xml-id"/>
+		</optional>
+	</define>
+	<define name="text-numbered-paragraph">
+		<element name="text:numbered-paragraph">
+			<ref name="text-numbered-paragraph-attr"/>
+			<optional>
+				<ref name="text-number"/>
+			</optional>
+			<choice>
+				<ref name="text-p"/>
+				<ref name="text-h"/>
+			</choice>
+		</element>
+	</define>
+	<define name="text-numbered-paragraph-attr">
+		<interleave>
+			<attribute name="text:list-id">
+				<ref name="NCName"/>
+			</attribute>
+			<optional>
+				<attribute name="text:level">
+					<ref name="positiveInteger"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:style-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+				<attribute name="text:continue-numbering">
+					<ref name="boolean"/>
+				</attribute>
+				<attribute name="text:start-value">
+					<ref name="nonNegativeInteger"/>
+				</attribute>
+			</optional>
+			<optional>
+				<ref name="xml-id"/>
+			</optional>
+		</interleave>
+	</define>
+	<define name="text-section">
+		<element name="text:section">
+			<ref name="text-section-attlist"/>
+			<choice>
+				<ref name="text-section-source"/>
+				<ref name="text-section-source-dde"/>
+				<empty/>
+			</choice>
+			<zeroOrMore>
+				<ref name="text-content"/>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="text-section-attlist">
+		<interleave>
+			<ref name="common-section-attlist"/>
+			<choice>
+				<attribute name="text:display">
+					<choice>
+						<value>true</value>
+						<value>none</value>
+					</choice>
+				</attribute>
+				<group>
+					<attribute name="text:display">
+						<value>condition</value>
+					</attribute>
+					<attribute name="text:condition">
+						<ref name="string"/>
+					</attribute>
+				</group>
+				<empty/>
+			</choice>
+		</interleave>
+	</define>
+	<define name="common-section-attlist">
+		<interleave>
+			<optional>
+				<attribute name="text:style-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+			<attribute name="text:name">
+				<ref name="string"/>
+			</attribute>
+			<optional>
+				<attribute name="text:protected">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:protection-key">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:protection-key-digest-algorithm">
+					<ref name="anyIRI"/>
+				</attribute>
+			</optional>
+			<optional>
+				<ref name="xml-id"/>
+			</optional>
+		</interleave>
+	</define>
+	<define name="text-section-source">
+		<element name="text:section-source">
+			<ref name="text-section-source-attr"/>
+		</element>
+	</define>
+	<define name="text-section-source-attr">
+		<interleave>
+			<optional>
+				<attribute name="xlink:type">
+					<value>simple</value>
+				</attribute>
+				<attribute name="xlink:href">
+					<ref name="anyIRI"/>
+				</attribute>
+				<optional>
+					<attribute name="xlink:show">
+						<value>embed</value>
+					</attribute>
+				</optional>
+			</optional>
+			<optional>
+				<attribute name="text:section-name">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:filter-name">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="text-section-source-dde">
+		<ref name="office-dde-source"/>
+	</define>
+	<define name="text-tracked-changes">
+		<optional>
+			<element name="text:tracked-changes">
+				<ref name="text-tracked-changes-attr"/>
+				<zeroOrMore>
+					<ref name="text-changed-region"/>
+				</zeroOrMore>
+			</element>
+		</optional>
+	</define>
+	<define name="text-tracked-changes-attr">
+		<optional>
+			<attribute name="text:track-changes">
+				<ref name="boolean"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="text-changed-region">
+		<element name="text:changed-region">
+			<ref name="text-changed-region-attr"/>
+			<ref name="text-changed-region-content"/>
+		</element>
+	</define>
+	<define name="text-changed-region-attr">
+		<group>
+			<ref name="xml-id"/>
+			<optional>
+				<attribute name="text:id">
+					<ref name="NCName"/>
+				</attribute>
+			</optional>
+		</group>
+	</define>
+	<define name="text-changed-region-content">
+		<choice>
+			<element name="text:insertion">
+				<ref name="office-change-info"/>
+			</element>
+			<element name="text:deletion">
+				<ref name="office-change-info"/>
+				<zeroOrMore>
+					<ref name="text-content"/>
+				</zeroOrMore>
+			</element>
+			<element name="text:format-change">
+				<ref name="office-change-info"/>
+			</element>
+		</choice>
+	</define>
+	<define name="change-marks">
+		<choice>
+			<element name="text:change">
+				<ref name="change-mark-attr"/>
+			</element>
+			<element name="text:change-start">
+				<ref name="change-mark-attr"/>
+			</element>
+			<element name="text:change-end">
+				<ref name="change-mark-attr"/>
+			</element>
+		</choice>
+	</define>
+	<define name="change-mark-attr">
+		<attribute name="text:change-id">
+			<ref name="IDREF"/>
+		</attribute>
+	</define>
+	<define name="text-soft-page-break">
+		<element name="text:soft-page-break">
+			<empty/>
+		</element>
+	</define>
+	<define name="text-decls">
+		<optional>
+			<element name="text:variable-decls">
+				<zeroOrMore>
+					<ref name="text-variable-decl"/>
+				</zeroOrMore>
+			</element>
+		</optional>
+		<optional>
+			<element name="text:sequence-decls">
+				<zeroOrMore>
+					<ref name="text-sequence-decl"/>
+				</zeroOrMore>
+			</element>
+		</optional>
+		<optional>
+			<element name="text:user-field-decls">
+				<zeroOrMore>
+					<ref name="text-user-field-decl"/>
+				</zeroOrMore>
+			</element>
+		</optional>
+		<optional>
+			<element name="text:dde-connection-decls">
+				<zeroOrMore>
+					<ref name="text-dde-connection-decl"/>
+				</zeroOrMore>
+			</element>
+		</optional>
+		<optional>
+			<ref name="text-alphabetical-index-auto-mark-file"/>
+		</optional>
+	</define>
+	<define name="paragraph-content-or-hyperlink">
+		<choice>
+			<ref name="paragraph-content"/>
+			<ref name="text-a"/>
+		</choice>
+	</define>
+	<define name="paragraph-content">
+		<choice>
+			<text/>
+			<element name="text:s">
+				<optional>
+					<attribute name="text:c">
+						<ref name="nonNegativeInteger"/>
+					</attribute>
+				</optional>
+			</element>
+			<element name="text:tab">
+				<ref name="text-tab-attr"/>
+			</element>
+			<element name="text:line-break">
+				<empty/>
+			</element>
+			<ref name="text-soft-page-break"/>
+			<element name="text:span">
+				<optional>
+					<attribute name="text:style-name">
+						<ref name="styleNameRef"/>
+					</attribute>
+				</optional>
+				<optional>
+					<attribute name="text:class-names">
+						<ref name="styleNameRefs"/>
+					</attribute>
+				</optional>
+				<zeroOrMore>
+					<ref name="paragraph-content-or-hyperlink"/>
+				</zeroOrMore>
+			</element>
+			<element name="text:meta">
+				<ref name="text-meta-attlist"/>
+				<zeroOrMore>
+					<ref name="paragraph-content-or-hyperlink"/>
+				</zeroOrMore>
+			</element>
+			<choice>
+				<ref name="text-bookmark"/>
+				<ref name="text-bookmark-start"/>
+				<ref name="text-bookmark-end"/>
+			</choice>
+			<element name="text:reference-mark">
+				<attribute name="text:name">
+					<ref name="string"/>
+				</attribute>
+			</element>
+			<choice>
+				<element name="text:reference-mark-start">
+					<attribute name="text:name">
+						<ref name="string"/>
+					</attribute>
+				</element>
+				<element name="text:reference-mark-end">
+					<attribute name="text:name">
+						<ref name="string"/>
+					</attribute>
+				</element>
+			</choice>
+			<element name="text:note">
+				<ref name="text-note-class"/>
+				<optional>
+					<attribute name="text:id">
+						<ref name="string"/>
+					</attribute>
+				</optional>
+				<element name="text:note-citation">
+					<optional>
+						<attribute name="text:label">
+							<ref name="string"/>
+						</attribute>
+					</optional>
+					<text/>
+				</element>
+				<element name="text:note-body">
+					<zeroOrMore>
+						<ref name="text-content"/>
+					</zeroOrMore>
+				</element>
+			</element>
+			<element name="text:ruby">
+				<optional>
+					<attribute name="text:style-name">
+						<ref name="styleNameRef"/>
+					</attribute>
+				</optional>
+				<element name="text:ruby-base">
+					<zeroOrMore>
+						<ref name="paragraph-content-or-hyperlink"/>
+					</zeroOrMore>
+				</element>
+				<element name="text:ruby-text">
+					<optional>
+						<attribute name="text:style-name">
+							<ref name="styleNameRef"/>
+						</attribute>
+					</optional>
+					<text/>
+				</element>
+			</element>
+			<choice>
+				<ref name="office-annotation"/>
+				<ref name="office-annotation-end"/>
+			</choice>
+			<ref name="change-marks"/>
+			<ref name="shape"/>
+			<element name="text:date">
+				<ref name="text-date-attlist"/>
+				<text/>
+			</element>
+			<element name="text:time">
+				<ref name="text-time-attlist"/>
+				<text/>
+			</element>
+			<element name="text:page-number">
+				<ref name="text-page-number-attlist"/>
+				<text/>
+			</element>
+			<element name="text:page-continuation">
+				<ref name="text-page-continuation-attlist"/>
+				<text/>
+			</element>
+			<element name="text:sender-firstname">
+				<ref name="common-field-fixed-attlist"/>
+				<text/>
+			</element>
+			<element name="text:sender-lastname">
+				<ref name="common-field-fixed-attlist"/>
+				<text/>
+			</element>
+			<element name="text:sender-initials">
+				<ref name="common-field-fixed-attlist"/>
+				<text/>
+			</element>
+			<element name="text:sender-title">
+				<ref name="common-field-fixed-attlist"/>
+				<text/>
+			</element>
+			<element name="text:sender-position">
+				<ref name="common-field-fixed-attlist"/>
+				<text/>
+			</element>
+			<element name="text:sender-email">
+				<ref name="common-field-fixed-attlist"/>
+				<text/>
+			</element>
+			<element name="text:sender-phone-private">
+				<ref name="common-field-fixed-attlist"/>
+				<text/>
+			</element>
+			<element name="text:sender-fax">
+				<ref name="common-field-fixed-attlist"/>
+				<text/>
+			</element>
+			<element name="text:sender-company">
+				<ref name="common-field-fixed-attlist"/>
+				<text/>
+			</element>
+			<element name="text:sender-phone-work">
+				<ref name="common-field-fixed-attlist"/>
+				<text/>
+			</element>
+			<element name="text:sender-street">
+				<ref name="common-field-fixed-attlist"/>
+				<text/>
+			</element>
+			<element name="text:sender-city">
+				<ref name="common-field-fixed-attlist"/>
+				<text/>
+			</element>
+			<element name="text:sender-postal-code">
+				<ref name="common-field-fixed-attlist"/>
+				<text/>
+			</element>
+			<element name="text:sender-country">
+				<ref name="common-field-fixed-attlist"/>
+				<text/>
+			</element>
+			<element name="text:sender-state-or-province">
+				<ref name="common-field-fixed-attlist"/>
+				<text/>
+			</element>
+			<element name="text:author-name">
+				<ref name="common-field-fixed-attlist"/>
+				<text/>
+			</element>
+			<element name="text:author-initials">
+				<ref name="common-field-fixed-attlist"/>
+				<text/>
+			</element>
+			<element name="text:chapter">
+				<ref name="text-chapter-attlist"/>
+				<text/>
+			</element>
+			<element name="text:file-name">
+				<ref name="text-file-name-attlist"/>
+				<text/>
+			</element>
+			<element name="text:template-name">
+				<ref name="text-template-name-attlist"/>
+				<text/>
+			</element>
+			<element name="text:sheet-name">
+				<text/>
+			</element>
+			<element name="text:variable-set">
+				<interleave>
+					<ref name="common-field-name-attlist"/>
+					<ref name="common-field-formula-attlist"/>
+					<ref name="common-value-and-type-attlist"/>
+					<ref name="common-field-display-value-none-attlist"/>
+					<ref name="common-field-data-style-name-attlist"/>
+				</interleave>
+				<text/>
+			</element>
+			<element name="text:variable-get">
+				<interleave>
+					<ref name="common-field-name-attlist"/>
+					<ref name="common-field-display-value-formula-attlist"/>
+					<ref name="common-field-data-style-name-attlist"/>
+				</interleave>
+				<text/>
+			</element>
+			<element name="text:variable-input">
+				<interleave>
+					<ref name="common-field-name-attlist"/>
+					<ref name="common-field-description-attlist"/>
+					<ref name="common-value-type-attlist"/>
+					<ref name="common-field-display-value-none-attlist"/>
+					<ref name="common-field-data-style-name-attlist"/>
+				</interleave>
+				<text/>
+			</element>
+			<element name="text:user-field-get">
+				<interleave>
+					<ref name="common-field-name-attlist"/>
+					<ref name="common-field-display-value-formula-none-attlist"/>
+					<ref name="common-field-data-style-name-attlist"/>
+				</interleave>
+				<text/>
+			</element>
+			<element name="text:user-field-input">
+				<interleave>
+					<ref name="common-field-name-attlist"/>
+					<ref name="common-field-description-attlist"/>
+					<ref name="common-field-data-style-name-attlist"/>
+				</interleave>
+				<text/>
+			</element>
+			<element name="text:sequence">
+				<interleave>
+					<ref name="common-field-name-attlist"/>
+					<ref name="common-field-formula-attlist"/>
+					<ref name="common-field-num-format-attlist"/>
+					<ref name="text-sequence-ref-name"/>
+				</interleave>
+				<text/>
+			</element>
+			<element name="text:expression">
+				<interleave>
+					<ref name="common-field-formula-attlist"/>
+					<optional>
+						<ref name="common-value-and-type-attlist"/>
+					</optional>
+					<ref name="common-field-display-value-formula-attlist"/>
+					<ref name="common-field-data-style-name-attlist"/>
+				</interleave>
+				<text/>
+			</element>
+			<element name="text:text-input">
+				<ref name="common-field-description-attlist"/>
+				<text/>
+			</element>
+			<element name="text:initial-creator">
+				<ref name="common-field-fixed-attlist"/>
+				<text/>
+			</element>
+			<element name="text:creation-date">
+				<interleave>
+					<ref name="common-field-fixed-attlist"/>
+					<ref name="common-field-data-style-name-attlist"/>
+					<optional>
+						<attribute name="text:date-value">
+							<ref name="dateOrDateTime"/>
+						</attribute>
+					</optional>
+				</interleave>
+				<text/>
+			</element>
+			<element name="text:creation-time">
+				<interleave>
+					<ref name="common-field-fixed-attlist"/>
+					<ref name="common-field-data-style-name-attlist"/>
+					<optional>
+						<attribute name="text:time-value">
+							<ref name="timeOrDateTime"/>
+						</attribute>
+					</optional>
+				</interleave>
+				<text/>
+			</element>
+			<element name="text:description">
+				<ref name="common-field-fixed-attlist"/>
+				<text/>
+			</element>
+			<element name="text:user-defined">
+				<interleave>
+					<ref name="common-field-fixed-attlist"/>
+					<attribute name="text:name">
+						<ref name="string"/>
+					</attribute>
+					<ref name="common-field-data-style-name-attlist"/>
+					<optional>
+						<attribute name="office:value">
+							<ref name="double"/>
+						</attribute>
+					</optional>
+					<optional>
+						<attribute name="office:date-value">
+							<ref name="dateOrDateTime"/>
+						</attribute>
+					</optional>
+					<optional>
+						<attribute name="office:time-value">
+							<ref name="duration"/>
+						</attribute>
+					</optional>
+					<optional>
+						<attribute name="office:boolean-value">
+							<ref name="boolean"/>
+						</attribute>
+					</optional>
+					<optional>
+						<attribute name="office:string-value">
+							<ref name="string"/>
+						</attribute>
+					</optional>
+				</interleave>
+				<text/>
+			</element>
+			<element name="text:print-time">
+				<interleave>
+					<ref name="common-field-fixed-attlist"/>
+					<ref name="common-field-data-style-name-attlist"/>
+					<optional>
+						<attribute name="text:time-value">
+							<ref name="time"/>
+						</attribute>
+					</optional>
+				</interleave>
+				<text/>
+			</element>
+			<element name="text:print-date">
+				<interleave>
+					<ref name="common-field-fixed-attlist"/>
+					<ref name="common-field-data-style-name-attlist"/>
+					<optional>
+						<attribute name="text:date-value">
+							<ref name="date"/>
+						</attribute>
+					</optional>
+				</interleave>
+				<text/>
+			</element>
+			<element name="text:printed-by">
+				<ref name="common-field-fixed-attlist"/>
+				<text/>
+			</element>
+			<element name="text:title">
+				<ref name="common-field-fixed-attlist"/>
+				<text/>
+			</element>
+			<element name="text:subject">
+				<ref name="common-field-fixed-attlist"/>
+				<text/>
+			</element>
+			<element name="text:keywords">
+				<ref name="common-field-fixed-attlist"/>
+				<text/>
+			</element>
+			<element name="text:editing-cycles">
+				<ref name="common-field-fixed-attlist"/>
+				<text/>
+			</element>
+			<element name="text:editing-duration">
+				<interleave>
+					<ref name="common-field-fixed-attlist"/>
+					<ref name="common-field-data-style-name-attlist"/>
+					<optional>
+						<attribute name="text:duration">
+							<ref name="duration"/>
+						</attribute>
+					</optional>
+				</interleave>
+				<text/>
+			</element>
+			<element name="text:modification-time">
+				<interleave>
+					<ref name="common-field-fixed-attlist"/>
+					<ref name="common-field-data-style-name-attlist"/>
+					<optional>
+						<attribute name="text:time-value">
+							<ref name="time"/>
+						</attribute>
+					</optional>
+				</interleave>
+				<text/>
+			</element>
+			<element name="text:modification-date">
+				<interleave>
+					<ref name="common-field-fixed-attlist"/>
+					<ref name="common-field-data-style-name-attlist"/>
+					<optional>
+						<attribute name="text:date-value">
+							<ref name="date"/>
+						</attribute>
+					</optional>
+				</interleave>
+				<text/>
+			</element>
+			<element name="text:creator">
+				<ref name="common-field-fixed-attlist"/>
+				<text/>
+			</element>
+			<element>
+				<choice>
+					<name>text:page-count</name>
+					<name>text:paragraph-count</name>
+					<name>text:word-count</name>
+					<name>text:character-count</name>
+					<name>text:table-count</name>
+					<name>text:image-count</name>
+					<name>text:object-count</name>
+				</choice>
+				<ref name="common-field-num-format-attlist"/>
+				<text/>
+			</element>
+			<element name="text:database-display">
+				<ref name="text-database-display-attlist"/>
+				<text/>
+			</element>
+			<element name="text:database-next">
+				<ref name="text-database-next-attlist"/>
+			</element>
+			<element name="text:database-row-select">
+				<ref name="text-database-row-select-attlist"/>
+			</element>
+			<element name="text:database-row-number">
+				<interleave>
+					<ref name="common-field-database-table"/>
+					<ref name="common-field-num-format-attlist"/>
+					<optional>
+						<attribute name="text:value">
+							<ref name="nonNegativeInteger"/>
+						</attribute>
+					</optional>
+				</interleave>
+				<text/>
+			</element>
+			<element name="text:database-name">
+				<ref name="common-field-database-table"/>
+				<text/>
+			</element>
+			<element name="text:page-variable-set">
+				<ref name="text-set-page-variable-attlist"/>
+				<text/>
+			</element>
+			<element name="text:page-variable-get">
+				<ref name="text-get-page-variable-attlist"/>
+				<text/>
+			</element>
+			<element name="text:placeholder">
+				<ref name="text-placeholder-attlist"/>
+				<text/>
+			</element>
+			<element name="text:conditional-text">
+				<ref name="text-conditional-text-attlist"/>
+				<text/>
+			</element>
+			<element name="text:hidden-text">
+				<ref name="text-hidden-text-attlist"/>
+				<text/>
+			</element>
+			<element>
+				<choice>
+					<name>text:reference-ref</name>
+					<name>text:bookmark-ref</name>
+				</choice>
+				<interleave>
+					<ref name="text-common-ref-content"/>
+					<ref name="text-bookmark-ref-content"/>
+				</interleave>
+			</element>
+			<element name="text:note-ref">
+				<interleave>
+					<ref name="text-common-ref-content"/>
+					<ref name="text-note-ref-content"/>
+				</interleave>
+			</element>
+			<element name="text:sequence-ref">
+				<interleave>
+					<ref name="text-common-ref-content"/>
+					<ref name="text-sequence-ref-content"/>
+				</interleave>
+			</element>
+			<element name="text:script">
+				<interleave>
+					<choice>
+						<group>
+							<attribute name="xlink:type">
+								<value>simple</value>
+							</attribute>
+							<attribute name="xlink:href">
+								<ref name="anyIRI"/>
+							</attribute>
+						</group>
+						<text/>
+					</choice>
+					<optional>
+						<attribute name="script:language">
+							<ref name="string"/>
+						</attribute>
+					</optional>
+				</interleave>
+			</element>
+			<element name="text:execute-macro">
+				<optional>
+					<attribute name="text:name">
+						<ref name="string"/>
+					</attribute>
+				</optional>
+				<optional>
+					<ref name="office-event-listeners"/>
+				</optional>
+				<text/>
+			</element>
+			<element name="text:hidden-paragraph">
+				<ref name="text-hidden-paragraph-attlist"/>
+				<text/>
+			</element>
+			<element name="text:dde-connection">
+				<attribute name="text:connection-name">
+					<ref name="string"/>
+				</attribute>
+				<text/>
+			</element>
+			<element name="text:measure">
+				<attribute name="text:kind">
+					<choice>
+						<value>value</value>
+						<value>unit</value>
+						<value>gap</value>
+					</choice>
+				</attribute>
+				<text/>
+			</element>
+			<element name="text:table-formula">
+				<interleave>
+					<ref name="common-field-formula-attlist"/>
+					<ref name="common-field-display-value-formula-attlist"/>
+					<ref name="common-field-data-style-name-attlist"/>
+				</interleave>
+				<text/>
+			</element>
+			<element name="text:meta-field">
+				<ref name="text-meta-field-attlist"/>
+				<zeroOrMore>
+					<ref name="paragraph-content-or-hyperlink"/>
+				</zeroOrMore>
+			</element>
+			<element name="text:toc-mark-start">
+				<ref name="text-toc-mark-start-attrs"/>
+			</element>
+			<element name="text:toc-mark-end">
+				<ref name="text-id"/>
+			</element>
+			<element name="text:toc-mark">
+				<attribute name="text:string-value">
+					<ref name="string"/>
+				</attribute>
+				<ref name="text-outline-level"/>
+			</element>
+			<element name="text:user-index-mark-start">
+				<ref name="text-id"/>
+				<ref name="text-outline-level"/>
+				<ref name="text-index-name"/>
+			</element>
+			<element name="text:user-index-mark-end">
+				<ref name="text-id"/>
+			</element>
+			<element name="text:user-index-mark">
+				<attribute name="text:string-value">
+					<ref name="string"/>
+				</attribute>
+				<ref name="text-outline-level"/>
+				<ref name="text-index-name"/>
+			</element>
+			<element name="text:alphabetical-index-mark-start">
+				<ref name="text-id"/>
+				<ref name="text-alphabetical-index-mark-attrs"/>
+			</element>
+			<element name="text:alphabetical-index-mark-end">
+				<ref name="text-id"/>
+			</element>
+			<element name="text:alphabetical-index-mark">
+				<attribute name="text:string-value">
+					<ref name="string"/>
+				</attribute>
+				<ref name="text-alphabetical-index-mark-attrs"/>
+			</element>
+			<element name="text:bibliography-mark">
+				<attribute name="text:bibliography-type">
+					<ref name="text-bibliography-types"/>
+				</attribute>
+				<zeroOrMore>
+					<attribute>
+						<choice>
+							<name>text:identifier</name>
+							<name>text:address</name>
+							<name>text:annote</name>
+							<name>text:author</name>
+							<name>text:booktitle</name>
+							<name>text:chapter</name>
+							<name>text:edition</name>
+							<name>text:editor</name>
+							<name>text:howpublished</name>
+							<name>text:institution</name>
+							<name>text:journal</name>
+							<name>text:month</name>
+							<name>text:note</name>
+							<name>text:number</name>
+							<name>text:organizations</name>
+							<name>text:pages</name>
+							<name>text:publisher</name>
+							<name>text:school</name>
+							<name>text:series</name>
+							<name>text:title</name>
+							<name>text:report-type</name>
+							<name>text:volume</name>
+							<name>text:year</name>
+							<name>text:url</name>
+							<name>text:custom1</name>
+							<name>text:custom2</name>
+							<name>text:custom3</name>
+							<name>text:custom4</name>
+							<name>text:custom5</name>
+							<name>text:isbn</name>
+							<name>text:issn</name>
+						</choice>
+						<ref name="string"/>
+					</attribute>
+				</zeroOrMore>
+				<text/>
+			</element>
+			<element name="presentation:header">
+				<empty/>
+			</element>
+			<element name="presentation:footer">
+				<empty/>
+			</element>
+			<element name="presentation:date-time">
+				<empty/>
+			</element>
+		</choice>
+	</define>
+	<define name="text-tab-attr">
+		<optional>
+			<attribute name="text:tab-ref">
+				<ref name="nonNegativeInteger"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="text-a">
+		<element name="text:a">
+			<ref name="text-a-attlist"/>
+			<optional>
+				<ref name="office-event-listeners"/>
+			</optional>
+			<zeroOrMore>
+				<ref name="paragraph-content"/>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="text-a-attlist">
+		<interleave>
+			<optional>
+				<attribute name="office:name">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="office:title">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<attribute name="xlink:type">
+				<value>simple</value>
+			</attribute>
+			<attribute name="xlink:href">
+				<ref name="anyIRI"/>
+			</attribute>
+			<optional>
+				<attribute name="xlink:actuate">
+					<value>onRequest</value>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="office:target-frame-name">
+					<ref name="targetFrameName"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="xlink:show">
+					<choice>
+						<value>new</value>
+						<value>replace</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:style-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:visited-style-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="text-meta-attlist">
+		<interleave>
+			<optional>
+				<ref name="common-in-content-meta-attlist"/>
+			</optional>
+			<optional>
+				<ref name="xml-id"/>
+			</optional>
+		</interleave>
+	</define>
+	<define name="text-bookmark">
+		<element name="text:bookmark">
+			<ref name="text-bookmark-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="text-bookmark-start">
+		<element name="text:bookmark-start">
+			<ref name="text-bookmark-start-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="text-bookmark-end">
+		<element name="text:bookmark-end">
+			<ref name="text-bookmark-end-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="text-bookmark-attlist">
+		<interleave>
+			<attribute name="text:name">
+				<ref name="string"/>
+			</attribute>
+			<optional>
+				<ref name="xml-id"/>
+			</optional>
+		</interleave>
+	</define>
+	<define name="text-bookmark-start-attlist">
+		<interleave>
+			<attribute name="text:name">
+				<ref name="string"/>
+			</attribute>
+			<optional>
+				<ref name="xml-id"/>
+			</optional>
+			<optional>
+				<ref name="common-in-content-meta-attlist"/>
+			</optional>
+		</interleave>
+	</define>
+	<define name="text-bookmark-end-attlist">
+		<attribute name="text:name">
+			<ref name="string"/>
+		</attribute>
+	</define>
+	<define name="text-note-class">
+		<attribute name="text:note-class">
+			<choice>
+				<value>footnote</value>
+				<value>endnote</value>
+			</choice>
+		</attribute>
+	</define>
+	<define name="text-date-attlist">
+		<interleave>
+			<interleave>
+				<ref name="common-field-fixed-attlist"/>
+				<ref name="common-field-data-style-name-attlist"/>
+			</interleave>
+			<optional>
+				<attribute name="text:date-value">
+					<ref name="dateOrDateTime"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:date-adjust">
+					<ref name="duration"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="text-time-attlist">
+		<interleave>
+			<interleave>
+				<ref name="common-field-fixed-attlist"/>
+				<ref name="common-field-data-style-name-attlist"/>
+			</interleave>
+			<optional>
+				<attribute name="text:time-value">
+					<ref name="timeOrDateTime"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:time-adjust">
+					<ref name="duration"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="text-page-number-attlist">
+		<interleave>
+			<interleave>
+				<ref name="common-field-num-format-attlist"/>
+				<ref name="common-field-fixed-attlist"/>
+			</interleave>
+			<optional>
+				<attribute name="text:page-adjust">
+					<ref name="integer"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:select-page">
+					<choice>
+						<value>previous</value>
+						<value>current</value>
+						<value>next</value>
+					</choice>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="text-page-continuation-attlist">
+		<interleave>
+			<attribute name="text:select-page">
+				<choice>
+					<value>previous</value>
+					<value>next</value>
+				</choice>
+			</attribute>
+			<optional>
+				<attribute name="text:string-value">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="text-chapter-attlist">
+		<interleave>
+			<attribute name="text:display">
+				<choice>
+					<value>name</value>
+					<value>number</value>
+					<value>number-and-name</value>
+					<value>plain-number-and-name</value>
+					<value>plain-number</value>
+				</choice>
+			</attribute>
+			<attribute name="text:outline-level">
+				<ref name="nonNegativeInteger"/>
+			</attribute>
+		</interleave>
+	</define>
+	<define name="text-file-name-attlist">
+		<interleave>
+			<optional>
+				<attribute name="text:display">
+					<choice>
+						<value>full</value>
+						<value>path</value>
+						<value>name</value>
+						<value>name-and-extension</value>
+					</choice>
+				</attribute>
+			</optional>
+			<ref name="common-field-fixed-attlist"/>
+		</interleave>
+	</define>
+	<define name="text-template-name-attlist">
+		<optional>
+			<attribute name="text:display">
+				<choice>
+					<value>full</value>
+					<value>path</value>
+					<value>name</value>
+					<value>name-and-extension</value>
+					<value>area</value>
+					<value>title</value>
+				</choice>
+			</attribute>
+		</optional>
+	</define>
+	<define name="text-variable-decl">
+		<element name="text:variable-decl">
+			<ref name="common-field-name-attlist"/>
+			<ref name="common-value-type-attlist"/>
+		</element>
+	</define>
+	<define name="text-user-field-decl">
+		<element name="text:user-field-decl">
+			<ref name="common-field-name-attlist"/>
+			<optional>
+				<ref name="common-field-formula-attlist"/>
+			</optional>
+			<ref name="common-value-and-type-attlist"/>
+		</element>
+	</define>
+	<define name="text-sequence-decl">
+		<element name="text:sequence-decl">
+			<ref name="text-sequence-decl-attlist"/>
+		</element>
+	</define>
+	<define name="text-sequence-decl-attlist">
+		<interleave>
+			<ref name="common-field-name-attlist"/>
+			<attribute name="text:display-outline-level">
+				<ref name="nonNegativeInteger"/>
+			</attribute>
+			<optional>
+				<attribute name="text:separation-character">
+					<ref name="character"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="text-sequence-ref-name">
+		<optional>
+			<attribute name="text:ref-name">
+				<ref name="string"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-field-database-table">
+		<ref name="common-field-database-table-attlist"/>
+		<ref name="common-field-database-name"/>
+	</define>
+	<define name="common-field-database-name">
+		<choice>
+			<optional>
+				<attribute name="text:database-name">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<ref name="form-connection-resource"/>
+		</choice>
+	</define>
+	<define name="common-field-database-table-attlist">
+		<interleave>
+			<attribute name="text:table-name">
+				<ref name="string"/>
+			</attribute>
+			<optional>
+				<attribute name="text:table-type">
+					<choice>
+						<value>table</value>
+						<value>query</value>
+						<value>command</value>
+					</choice>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="text-database-display-attlist">
+		<interleave>
+			<ref name="common-field-database-table"/>
+			<ref name="common-field-data-style-name-attlist"/>
+			<attribute name="text:column-name">
+				<ref name="string"/>
+			</attribute>
+		</interleave>
+	</define>
+	<define name="text-database-next-attlist">
+		<interleave>
+			<ref name="common-field-database-table"/>
+			<optional>
+				<attribute name="text:condition">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="text-database-row-select-attlist">
+		<interleave>
+			<ref name="common-field-database-table"/>
+			<optional>
+				<attribute name="text:condition">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:row-number">
+					<ref name="nonNegativeInteger"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="text-set-page-variable-attlist">
+		<interleave>
+			<optional>
+				<attribute name="text:active">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:page-adjust">
+					<ref name="integer"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="text-get-page-variable-attlist">
+		<ref name="common-field-num-format-attlist"/>
+	</define>
+	<define name="text-placeholder-attlist">
+		<interleave>
+			<attribute name="text:placeholder-type">
+				<choice>
+					<value>text</value>
+					<value>table</value>
+					<value>text-box</value>
+					<value>image</value>
+					<value>object</value>
+				</choice>
+			</attribute>
+			<ref name="common-field-description-attlist"/>
+		</interleave>
+	</define>
+	<define name="text-conditional-text-attlist">
+		<interleave>
+			<attribute name="text:condition">
+				<ref name="string"/>
+			</attribute>
+			<attribute name="text:string-value-if-true">
+				<ref name="string"/>
+			</attribute>
+			<attribute name="text:string-value-if-false">
+				<ref name="string"/>
+			</attribute>
+			<optional>
+				<attribute name="text:current-value">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="text-hidden-text-attlist">
+		<interleave>
+			<attribute name="text:condition">
+				<ref name="string"/>
+			</attribute>
+			<attribute name="text:string-value">
+				<ref name="string"/>
+			</attribute>
+			<optional>
+				<attribute name="text:is-hidden">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="text-common-ref-content">
+		<interleave>
+			<text/>
+			<optional>
+				<attribute name="text:ref-name">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="text-bookmark-ref-content">
+		<optional>
+			<attribute name="text:reference-format">
+				<choice>
+					<ref name="common-ref-format-values"/>
+					<value>number-no-superior</value>
+					<value>number-all-superior</value>
+					<value>number</value>
+				</choice>
+			</attribute>
+		</optional>
+	</define>
+	<define name="text-note-ref-content">
+		<interleave>
+			<optional>
+				<attribute name="text:reference-format">
+					<choice>
+						<ref name="common-ref-format-values"/>
+					</choice>
+				</attribute>
+			</optional>
+			<ref name="text-note-class"/>
+		</interleave>
+	</define>
+	<define name="text-sequence-ref-content">
+		<optional>
+			<attribute name="text:reference-format">
+				<choice>
+					<ref name="common-ref-format-values"/>
+					<value>category-and-value</value>
+					<value>caption</value>
+					<value>value</value>
+				</choice>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-ref-format-values">
+		<choice>
+			<value>page</value>
+			<value>chapter</value>
+			<value>direction</value>
+			<value>text</value>
+		</choice>
+	</define>
+	<define name="text-hidden-paragraph-attlist">
+		<interleave>
+			<attribute name="text:condition">
+				<ref name="string"/>
+			</attribute>
+			<optional>
+				<attribute name="text:is-hidden">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="text-meta-field-attlist">
+		<interleave>
+			<ref name="xml-id"/>
+			<ref name="common-field-data-style-name-attlist"/>
+		</interleave>
+	</define>
+	<define name="common-value-type-attlist">
+		<attribute name="office:value-type">
+			<ref name="valueType"/>
+		</attribute>
+	</define>
+	<define name="common-value-and-type-attlist">
+		<choice>
+			<group>
+				<attribute name="office:value-type">
+					<value>float</value>
+				</attribute>
+				<attribute name="office:value">
+					<ref name="double"/>
+				</attribute>
+			</group>
+			<group>
+				<attribute name="office:value-type">
+					<value>percentage</value>
+				</attribute>
+				<attribute name="office:value">
+					<ref name="double"/>
+				</attribute>
+			</group>
+			<group>
+				<attribute name="office:value-type">
+					<value>currency</value>
+				</attribute>
+				<attribute name="office:value">
+					<ref name="double"/>
+				</attribute>
+				<optional>
+					<attribute name="office:currency">
+						<ref name="string"/>
+					</attribute>
+				</optional>
+			</group>
+			<group>
+				<attribute name="office:value-type">
+					<value>date</value>
+				</attribute>
+				<attribute name="office:date-value">
+					<ref name="dateOrDateTime"/>
+				</attribute>
+			</group>
+			<group>
+				<attribute name="office:value-type">
+					<value>time</value>
+				</attribute>
+				<attribute name="office:time-value">
+					<ref name="duration"/>
+				</attribute>
+			</group>
+			<group>
+				<attribute name="office:value-type">
+					<value>boolean</value>
+				</attribute>
+				<attribute name="office:boolean-value">
+					<ref name="boolean"/>
+				</attribute>
+			</group>
+			<group>
+				<attribute name="office:value-type">
+					<value>string</value>
+				</attribute>
+				<optional>
+					<attribute name="office:string-value">
+						<ref name="string"/>
+					</attribute>
+				</optional>
+			</group>
+		</choice>
+	</define>
+	<define name="common-field-fixed-attlist">
+		<optional>
+			<attribute name="text:fixed">
+				<ref name="boolean"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-field-name-attlist">
+		<attribute name="text:name">
+			<ref name="variableName"/>
+		</attribute>
+	</define>
+	<define name="common-field-description-attlist">
+		<optional>
+			<attribute name="text:description">
+				<ref name="string"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-field-display-value-none-attlist">
+		<optional>
+			<attribute name="text:display">
+				<choice>
+					<value>value</value>
+					<value>none</value>
+				</choice>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-field-display-value-formula-none-attlist">
+		<optional>
+			<attribute name="text:display">
+				<choice>
+					<value>value</value>
+					<value>formula</value>
+					<value>none</value>
+				</choice>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-field-display-value-formula-attlist">
+		<optional>
+			<attribute name="text:display">
+				<choice>
+					<value>value</value>
+					<value>formula</value>
+				</choice>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-field-formula-attlist">
+		<optional>
+			<attribute name="text:formula">
+				<ref name="string"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-field-data-style-name-attlist">
+		<optional>
+			<attribute name="style:data-style-name">
+				<ref name="styleNameRef"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-field-num-format-attlist">
+		<optional>
+			<ref name="common-num-format-attlist"/>
+		</optional>
+	</define>
+	<define name="text-toc-mark-start-attrs">
+		<ref name="text-id"/>
+		<ref name="text-outline-level"/>
+	</define>
+	<define name="text-outline-level">
+		<optional>
+			<attribute name="text:outline-level">
+				<ref name="positiveInteger"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="text-id">
+		<attribute name="text:id">
+			<ref name="string"/>
+		</attribute>
+	</define>
+	<define name="text-index-name">
+		<attribute name="text:index-name">
+			<ref name="string"/>
+		</attribute>
+	</define>
+	<define name="text-alphabetical-index-mark-attrs">
+		<interleave>
+			<optional>
+				<attribute name="text:key1">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:key2">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:string-value-phonetic">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:key1-phonetic">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:key2-phonetic">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:main-entry">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="text-bibliography-types">
+		<choice>
+			<value>article</value>
+			<value>book</value>
+			<value>booklet</value>
+			<value>conference</value>
+			<value>custom1</value>
+			<value>custom2</value>
+			<value>custom3</value>
+			<value>custom4</value>
+			<value>custom5</value>
+			<value>email</value>
+			<value>inbook</value>
+			<value>incollection</value>
+			<value>inproceedings</value>
+			<value>journal</value>
+			<value>manual</value>
+			<value>mastersthesis</value>
+			<value>misc</value>
+			<value>phdthesis</value>
+			<value>proceedings</value>
+			<value>techreport</value>
+			<value>unpublished</value>
+			<value>www</value>
+		</choice>
+	</define>
+	<define name="text-index-body">
+		<element name="text:index-body">
+			<zeroOrMore>
+				<ref name="index-content-main"/>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="index-content-main">
+		<choice>
+			<ref name="text-content"/>
+			<ref name="text-index-title"/>
+		</choice>
+	</define>
+	<define name="text-index-title">
+		<element name="text:index-title">
+			<ref name="common-section-attlist"/>
+			<zeroOrMore>
+				<ref name="index-content-main"/>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="text-table-of-content">
+		<element name="text:table-of-content">
+			<ref name="common-section-attlist"/>
+			<ref name="text-table-of-content-source"/>
+			<ref name="text-index-body"/>
+		</element>
+	</define>
+	<define name="text-table-of-content-source">
+		<element name="text:table-of-content-source">
+			<ref name="text-table-of-content-source-attlist"/>
+			<optional>
+				<ref name="text-index-title-template"/>
+			</optional>
+			<zeroOrMore>
+				<ref name="text-table-of-content-entry-template"/>
+			</zeroOrMore>
+			<zeroOrMore>
+				<ref name="text-index-source-styles"/>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="text-table-of-content-source-attlist">
+		<interleave>
+			<optional>
+				<attribute name="text:outline-level">
+					<ref name="positiveInteger"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:use-outline-level">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:use-index-marks">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:use-index-source-styles">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:index-scope">
+					<choice>
+						<value>document</value>
+						<value>chapter</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:relative-tab-stop-position">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="text-table-of-content-entry-template">
+		<element name="text:table-of-content-entry-template">
+			<ref name="text-table-of-content-entry-template-attlist"/>
+			<zeroOrMore>
+				<ref name="text-table-of-content-children"/>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="text-table-of-content-children">
+		<choice>
+			<ref name="text-index-entry-chapter"/>
+			<ref name="text-index-entry-page-number"/>
+			<ref name="text-index-entry-text"/>
+			<ref name="text-index-entry-span"/>
+			<ref name="text-index-entry-tab-stop"/>
+			<ref name="text-index-entry-link-start"/>
+			<ref name="text-index-entry-link-end"/>
+		</choice>
+	</define>
+	<define name="text-table-of-content-entry-template-attlist">
+		<interleave>
+			<attribute name="text:outline-level">
+				<ref name="positiveInteger"/>
+			</attribute>
+			<attribute name="text:style-name">
+				<ref name="styleNameRef"/>
+			</attribute>
+		</interleave>
+	</define>
+	<define name="text-illustration-index">
+		<element name="text:illustration-index">
+			<ref name="common-section-attlist"/>
+			<ref name="text-illustration-index-source"/>
+			<ref name="text-index-body"/>
+		</element>
+	</define>
+	<define name="text-illustration-index-source">
+		<element name="text:illustration-index-source">
+			<ref name="text-illustration-index-source-attrs"/>
+			<optional>
+				<ref name="text-index-title-template"/>
+			</optional>
+			<optional>
+				<ref name="text-illustration-index-entry-template"/>
+			</optional>
+		</element>
+	</define>
+	<define name="text-illustration-index-source-attrs">
+		<interleave>
+			<ref name="text-index-scope-attr"/>
+			<ref name="text-relative-tab-stop-position-attr"/>
+			<optional>
+				<attribute name="text:use-caption">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:caption-sequence-name">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:caption-sequence-format">
+					<choice>
+						<value>text</value>
+						<value>category-and-value</value>
+						<value>caption</value>
+					</choice>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="text-index-scope-attr">
+		<optional>
+			<attribute name="text:index-scope">
+				<choice>
+					<value>document</value>
+					<value>chapter</value>
+				</choice>
+			</attribute>
+		</optional>
+	</define>
+	<define name="text-relative-tab-stop-position-attr">
+		<optional>
+			<attribute name="text:relative-tab-stop-position">
+				<ref name="boolean"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="text-illustration-index-entry-template">
+		<element name="text:illustration-index-entry-template">
+			<ref name="text-illustration-index-entry-content"/>
+		</element>
+	</define>
+	<define name="text-illustration-index-entry-content">
+		<ref name="text-illustration-index-entry-template-attrs"/>
+		<zeroOrMore>
+			<choice>
+				<ref name="text-index-entry-chapter"/>
+				<ref name="text-index-entry-page-number"/>
+				<ref name="text-index-entry-text"/>
+				<ref name="text-index-entry-span"/>
+				<ref name="text-index-entry-tab-stop"/>
+			</choice>
+		</zeroOrMore>
+	</define>
+	<define name="text-illustration-index-entry-template-attrs">
+		<attribute name="text:style-name">
+			<ref name="styleNameRef"/>
+		</attribute>
+	</define>
+	<define name="text-table-index">
+		<element name="text:table-index">
+			<ref name="common-section-attlist"/>
+			<ref name="text-table-index-source"/>
+			<ref name="text-index-body"/>
+		</element>
+	</define>
+	<define name="text-table-index-source">
+		<element name="text:table-index-source">
+			<ref name="text-illustration-index-source-attrs"/>
+			<optional>
+				<ref name="text-index-title-template"/>
+			</optional>
+			<optional>
+				<ref name="text-table-index-entry-template"/>
+			</optional>
+		</element>
+	</define>
+	<define name="text-table-index-entry-template">
+		<element name="text:table-index-entry-template">
+			<ref name="text-illustration-index-entry-content"/>
+		</element>
+	</define>
+	<define name="text-object-index">
+		<element name="text:object-index">
+			<ref name="common-section-attlist"/>
+			<ref name="text-object-index-source"/>
+			<ref name="text-index-body"/>
+		</element>
+	</define>
+	<define name="text-object-index-source">
+		<element name="text:object-index-source">
+			<ref name="text-object-index-source-attrs"/>
+			<optional>
+				<ref name="text-index-title-template"/>
+			</optional>
+			<optional>
+				<ref name="text-object-index-entry-template"/>
+			</optional>
+		</element>
+	</define>
+	<define name="text-object-index-source-attrs">
+		<interleave>
+			<ref name="text-index-scope-attr"/>
+			<ref name="text-relative-tab-stop-position-attr"/>
+			<optional>
+				<attribute name="text:use-spreadsheet-objects">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:use-math-objects">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:use-draw-objects">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:use-chart-objects">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:use-other-objects">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="text-object-index-entry-template">
+		<element name="text:object-index-entry-template">
+			<ref name="text-illustration-index-entry-content"/>
+		</element>
+	</define>
+	<define name="text-user-index">
+		<element name="text:user-index">
+			<ref name="common-section-attlist"/>
+			<ref name="text-user-index-source"/>
+			<ref name="text-index-body"/>
+		</element>
+	</define>
+	<define name="text-user-index-source">
+		<element name="text:user-index-source">
+			<ref name="text-user-index-source-attr"/>
+			<optional>
+				<ref name="text-index-title-template"/>
+			</optional>
+			<zeroOrMore>
+				<ref name="text-user-index-entry-template"/>
+			</zeroOrMore>
+			<zeroOrMore>
+				<ref name="text-index-source-styles"/>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="text-user-index-source-attr">
+		<interleave>
+			<ref name="text-index-scope-attr"/>
+			<ref name="text-relative-tab-stop-position-attr"/>
+			<optional>
+				<attribute name="text:use-index-marks">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:use-index-source-styles">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:use-graphics">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:use-tables">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:use-floating-frames">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:use-objects">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:copy-outline-levels">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<attribute name="text:index-name">
+				<ref name="string"/>
+			</attribute>
+		</interleave>
+	</define>
+	<define name="text-user-index-entry-template">
+		<element name="text:user-index-entry-template">
+			<ref name="text-user-index-entry-template-attrs"/>
+			<zeroOrMore>
+				<choice>
+					<ref name="text-index-entry-chapter"/>
+					<ref name="text-index-entry-page-number"/>
+					<ref name="text-index-entry-text"/>
+					<ref name="text-index-entry-span"/>
+					<ref name="text-index-entry-tab-stop"/>
+				</choice>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="text-user-index-entry-template-attrs">
+		<interleave>
+			<attribute name="text:outline-level">
+				<ref name="positiveInteger"/>
+			</attribute>
+			<attribute name="text:style-name">
+				<ref name="styleNameRef"/>
+			</attribute>
+		</interleave>
+	</define>
+	<define name="text-alphabetical-index">
+		<element name="text:alphabetical-index">
+			<ref name="common-section-attlist"/>
+			<ref name="text-alphabetical-index-source"/>
+			<ref name="text-index-body"/>
+		</element>
+	</define>
+	<define name="text-alphabetical-index-source">
+		<element name="text:alphabetical-index-source">
+			<ref name="text-alphabetical-index-source-attrs"/>
+			<optional>
+				<ref name="text-index-title-template"/>
+			</optional>
+			<zeroOrMore>
+				<ref name="text-alphabetical-index-entry-template"/>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="text-alphabetical-index-source-attrs">
+		<interleave>
+			<ref name="text-index-scope-attr"/>
+			<ref name="text-relative-tab-stop-position-attr"/>
+			<optional>
+				<attribute name="text:ignore-case">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:main-entry-style-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:alphabetical-separators">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:combine-entries">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:combine-entries-with-dash">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:combine-entries-with-pp">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:use-keys-as-entries">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:capitalize-entries">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:comma-separated">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="fo:language">
+					<ref name="languageCode"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="fo:country">
+					<ref name="countryCode"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="fo:script">
+					<ref name="scriptCode"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:rfc-language-tag">
+					<ref name="language"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:sort-algorithm">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="text-alphabetical-index-auto-mark-file">
+		<element name="text:alphabetical-index-auto-mark-file">
+			<attribute name="xlink:type">
+				<value>simple</value>
+			</attribute>
+			<attribute name="xlink:href">
+				<ref name="anyIRI"/>
+			</attribute>
+		</element>
+	</define>
+	<define name="text-alphabetical-index-entry-template">
+		<element name="text:alphabetical-index-entry-template">
+			<ref name="text-alphabetical-index-entry-template-attrs"/>
+			<zeroOrMore>
+				<choice>
+					<ref name="text-index-entry-chapter"/>
+					<ref name="text-index-entry-page-number"/>
+					<ref name="text-index-entry-text"/>
+					<ref name="text-index-entry-span"/>
+					<ref name="text-index-entry-tab-stop"/>
+				</choice>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="text-alphabetical-index-entry-template-attrs">
+		<interleave>
+			<attribute name="text:outline-level">
+				<choice>
+					<value>1</value>
+					<value>2</value>
+					<value>3</value>
+					<value>separator</value>
+				</choice>
+			</attribute>
+			<attribute name="text:style-name">
+				<ref name="styleNameRef"/>
+			</attribute>
+		</interleave>
+	</define>
+	<define name="text-bibliography">
+		<element name="text:bibliography">
+			<ref name="common-section-attlist"/>
+			<ref name="text-bibliography-source"/>
+			<ref name="text-index-body"/>
+		</element>
+	</define>
+	<define name="text-bibliography-source">
+		<element name="text:bibliography-source">
+			<optional>
+				<ref name="text-index-title-template"/>
+			</optional>
+			<zeroOrMore>
+				<ref name="text-bibliography-entry-template"/>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="text-bibliography-entry-template">
+		<element name="text:bibliography-entry-template">
+			<ref name="text-bibliography-entry-template-attrs"/>
+			<zeroOrMore>
+				<choice>
+					<ref name="text-index-entry-span"/>
+					<ref name="text-index-entry-tab-stop"/>
+					<ref name="text-index-entry-bibliography"/>
+				</choice>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="text-bibliography-entry-template-attrs">
+		<interleave>
+			<attribute name="text:bibliography-type">
+				<ref name="text-bibliography-types"/>
+			</attribute>
+			<attribute name="text:style-name">
+				<ref name="styleNameRef"/>
+			</attribute>
+		</interleave>
+	</define>
+	<define name="text-index-source-styles">
+		<element name="text:index-source-styles">
+			<attribute name="text:outline-level">
+				<ref name="positiveInteger"/>
+			</attribute>
+			<zeroOrMore>
+				<ref name="text-index-source-style"/>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="text-index-source-style">
+		<element name="text:index-source-style">
+			<attribute name="text:style-name">
+				<ref name="styleName"/>
+			</attribute>
+			<empty/>
+		</element>
+	</define>
+	<define name="text-index-title-template">
+		<element name="text:index-title-template">
+			<optional>
+				<attribute name="text:style-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+			<text/>
+		</element>
+	</define>
+	<define name="text-index-entry-chapter">
+		<element name="text:index-entry-chapter">
+			<optional>
+				<attribute name="text:style-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+			<ref name="text-index-entry-chapter-attrs"/>
+		</element>
+	</define>
+	<define name="text-index-entry-chapter-attrs">
+		<interleave>
+			<optional>
+				<attribute name="text:display">
+					<choice>
+						<value>name</value>
+						<value>number</value>
+						<value>number-and-name</value>
+						<value>plain-number</value>
+						<value>plain-number-and-name</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:outline-level">
+					<ref name="positiveInteger"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="text-index-entry-text">
+		<element name="text:index-entry-text">
+			<optional>
+				<attribute name="text:style-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+		</element>
+	</define>
+	<define name="text-index-entry-page-number">
+		<element name="text:index-entry-page-number">
+			<optional>
+				<attribute name="text:style-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+		</element>
+	</define>
+	<define name="text-index-entry-span">
+		<element name="text:index-entry-span">
+			<optional>
+				<attribute name="text:style-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+			<text/>
+		</element>
+	</define>
+	<define name="text-index-entry-bibliography">
+		<element name="text:index-entry-bibliography">
+			<ref name="text-index-entry-bibliography-attrs"/>
+		</element>
+	</define>
+	<define name="text-index-entry-bibliography-attrs">
+		<interleave>
+			<optional>
+				<attribute name="text:style-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+			<attribute name="text:bibliography-data-field">
+				<choice>
+					<value>address</value>
+					<value>annote</value>
+					<value>author</value>
+					<value>bibliography-type</value>
+					<value>booktitle</value>
+					<value>chapter</value>
+					<value>custom1</value>
+					<value>custom2</value>
+					<value>custom3</value>
+					<value>custom4</value>
+					<value>custom5</value>
+					<value>edition</value>
+					<value>editor</value>
+					<value>howpublished</value>
+					<value>identifier</value>
+					<value>institution</value>
+					<value>isbn</value>
+					<value>issn</value>
+					<value>journal</value>
+					<value>month</value>
+					<value>note</value>
+					<value>number</value>
+					<value>organizations</value>
+					<value>pages</value>
+					<value>publisher</value>
+					<value>report-type</value>
+					<value>school</value>
+					<value>series</value>
+					<value>title</value>
+					<value>url</value>
+					<value>volume</value>
+					<value>year</value>
+				</choice>
+			</attribute>
+		</interleave>
+	</define>
+	<define name="text-index-entry-tab-stop">
+		<element name="text:index-entry-tab-stop">
+			<optional>
+				<attribute name="text:style-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+			<ref name="text-index-entry-tab-stop-attrs"/>
+		</element>
+	</define>
+	<define name="text-index-entry-tab-stop-attrs">
+		<interleave>
+			<optional>
+				<attribute name="style:leader-char">
+					<ref name="character"/>
+				</attribute>
+			</optional>
+			<choice>
+				<attribute name="style:type">
+					<value>right</value>
+				</attribute>
+				<group>
+					<attribute name="style:type">
+						<value>left</value>
+					</attribute>
+					<attribute name="style:position">
+						<ref name="length"/>
+					</attribute>
+				</group>
+			</choice>
+		</interleave>
+	</define>
+	<define name="text-index-entry-link-start">
+		<element name="text:index-entry-link-start">
+			<optional>
+				<attribute name="text:style-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+		</element>
+	</define>
+	<define name="text-index-entry-link-end">
+		<element name="text:index-entry-link-end">
+			<optional>
+				<attribute name="text:style-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+		</element>
+	</define>
+	<define name="table-table">
+		<element name="table:table">
+			<ref name="table-table-attlist"/>
+			<optional>
+				<ref name="table-title"/>
+			</optional>
+			<optional>
+				<ref name="table-desc"/>
+			</optional>
+			<optional>
+				<ref name="table-table-source"/>
+			</optional>
+			<optional>
+				<ref name="office-dde-source"/>
+			</optional>
+			<optional>
+				<ref name="table-scenario"/>
+			</optional>
+			<optional>
+				<ref name="office-forms"/>
+			</optional>
+			<optional>
+				<ref name="table-shapes"/>
+			</optional>
+			<ref name="table-columns-and-groups"/>
+			<ref name="table-rows-and-groups"/>
+			<optional>
+				<ref name="table-named-expressions"/>
+			</optional>
+		</element>
+	</define>
+	<define name="table-columns-and-groups">
+		<oneOrMore>
+			<choice>
+				<ref name="table-table-column-group"/>
+				<ref name="table-columns-no-group"/>
+			</choice>
+		</oneOrMore>
+	</define>
+	<define name="table-columns-no-group">
+		<choice>
+			<group>
+				<ref name="table-columns"/>
+				<optional>
+					<ref name="table-table-header-columns"/>
+					<optional>
+						<ref name="table-columns"/>
+					</optional>
+				</optional>
+			</group>
+			<group>
+				<ref name="table-table-header-columns"/>
+				<optional>
+					<ref name="table-columns"/>
+				</optional>
+			</group>
+		</choice>
+	</define>
+	<define name="table-columns">
+		<choice>
+			<ref name="table-table-columns"/>
+			<oneOrMore>
+				<ref name="table-table-column"/>
+			</oneOrMore>
+		</choice>
+	</define>
+	<define name="table-rows-and-groups">
+		<oneOrMore>
+			<choice>
+				<ref name="table-table-row-group"/>
+				<ref name="table-rows-no-group"/>
+			</choice>
+		</oneOrMore>
+	</define>
+	<define name="table-rows-no-group">
+		<choice>
+			<group>
+				<ref name="table-rows"/>
+				<optional>
+					<ref name="table-table-header-rows"/>
+					<optional>
+						<ref name="table-rows"/>
+					</optional>
+				</optional>
+			</group>
+			<group>
+				<ref name="table-table-header-rows"/>
+				<optional>
+					<ref name="table-rows"/>
+				</optional>
+			</group>
+		</choice>
+	</define>
+	<define name="table-rows">
+		<choice>
+			<ref name="table-table-rows"/>
+			<oneOrMore>
+				<optional>
+					<ref name="text-soft-page-break"/>
+				</optional>
+				<ref name="table-table-row"/>
+			</oneOrMore>
+		</choice>
+	</define>
+	<define name="table-table-attlist">
+		<interleave>
+			<optional>
+				<attribute name="table:name">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:style-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:template-name">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:use-first-row-styles">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:use-last-row-styles">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:use-first-column-styles">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:use-last-column-styles">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:use-banding-rows-styles">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:use-banding-columns-styles">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:protected">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:protection-key">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:protection-key-digest-algorithm">
+					<ref name="anyIRI"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:print">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:print-ranges">
+					<ref name="cellRangeAddressList"/>
+				</attribute>
+			</optional>
+			<optional>
+				<ref name="xml-id"/>
+			</optional>
+			<optional>
+				<attribute name="table:is-sub-table">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="table-title">
+		<element name="table:title">
+			<text/>
+		</element>
+	</define>
+	<define name="table-desc">
+		<element name="table:desc">
+			<text/>
+		</element>
+	</define>
+	<define name="table-table-row">
+		<element name="table:table-row">
+			<ref name="table-table-row-attlist"/>
+			<oneOrMore>
+				<choice>
+					<ref name="table-table-cell"/>
+					<ref name="table-covered-table-cell"/>
+				</choice>
+			</oneOrMore>
+		</element>
+	</define>
+	<define name="table-table-row-attlist">
+		<interleave>
+			<optional>
+				<attribute name="table:number-rows-repeated">
+					<ref name="positiveInteger"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:style-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:default-cell-style-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:visibility">
+					<ref name="table-visibility-value"/>
+				</attribute>
+			</optional>
+			<optional>
+				<ref name="xml-id"/>
+			</optional>
+		</interleave>
+	</define>
+	<define name="table-visibility-value">
+		<choice>
+			<value>visible</value>
+			<value>collapse</value>
+			<value>filter</value>
+		</choice>
+	</define>
+	<define name="table-table-cell">
+		<element name="table:table-cell">
+			<ref name="table-table-cell-attlist"/>
+			<ref name="table-table-cell-attlist-extra"/>
+			<ref name="table-table-cell-content"/>
+		</element>
+	</define>
+	<define name="table-covered-table-cell">
+		<element name="table:covered-table-cell">
+			<ref name="table-table-cell-attlist"/>
+			<ref name="table-table-cell-content"/>
+		</element>
+	</define>
+	<define name="table-table-cell-content">
+		<optional>
+			<ref name="table-cell-range-source"/>
+		</optional>
+		<optional>
+			<ref name="office-annotation"/>
+		</optional>
+		<optional>
+			<ref name="table-detective"/>
+		</optional>
+		<zeroOrMore>
+			<ref name="text-content"/>
+		</zeroOrMore>
+	</define>
+	<define name="table-table-cell-attlist">
+		<interleave>
+			<optional>
+				<attribute name="table:number-columns-repeated">
+					<ref name="positiveInteger"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:style-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:content-validation-name">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:formula">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<ref name="common-value-and-type-attlist"/>
+			</optional>
+			<optional>
+				<attribute name="table:protect">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:protected">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<ref name="xml-id"/>
+			</optional>
+			<optional>
+				<ref name="common-in-content-meta-attlist"/>
+			</optional>
+		</interleave>
+	</define>
+	<define name="table-table-cell-attlist-extra">
+		<interleave>
+			<optional>
+				<attribute name="table:number-columns-spanned">
+					<ref name="positiveInteger"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:number-rows-spanned">
+					<ref name="positiveInteger"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:number-matrix-columns-spanned">
+					<ref name="positiveInteger"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:number-matrix-rows-spanned">
+					<ref name="positiveInteger"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="table-table-column">
+		<element name="table:table-column">
+			<ref name="table-table-column-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="table-table-column-attlist">
+		<interleave>
+			<optional>
+				<attribute name="table:number-columns-repeated">
+					<ref name="positiveInteger"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:style-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:visibility">
+					<ref name="table-visibility-value"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:default-cell-style-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+			<optional>
+				<ref name="xml-id"/>
+			</optional>
+		</interleave>
+	</define>
+	<define name="table-table-header-columns">
+		<element name="table:table-header-columns">
+			<oneOrMore>
+				<ref name="table-table-column"/>
+			</oneOrMore>
+		</element>
+	</define>
+	<define name="table-table-columns">
+		<element name="table:table-columns">
+			<oneOrMore>
+				<ref name="table-table-column"/>
+			</oneOrMore>
+		</element>
+	</define>
+	<define name="table-table-column-group">
+		<element name="table:table-column-group">
+			<ref name="table-table-column-group-attlist"/>
+			<ref name="table-columns-and-groups"/>
+		</element>
+	</define>
+	<define name="table-table-column-group-attlist">
+		<optional>
+			<attribute name="table:display">
+				<ref name="boolean"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="table-table-header-rows">
+		<element name="table:table-header-rows">
+			<oneOrMore>
+				<optional>
+					<ref name="text-soft-page-break"/>
+				</optional>
+				<ref name="table-table-row"/>
+			</oneOrMore>
+		</element>
+	</define>
+	<define name="table-table-rows">
+		<element name="table:table-rows">
+			<oneOrMore>
+				<optional>
+					<ref name="text-soft-page-break"/>
+				</optional>
+				<ref name="table-table-row"/>
+			</oneOrMore>
+		</element>
+	</define>
+	<define name="table-table-row-group">
+		<element name="table:table-row-group">
+			<ref name="table-table-row-group-attlist"/>
+			<ref name="table-rows-and-groups"/>
+		</element>
+	</define>
+	<define name="table-table-row-group-attlist">
+		<optional>
+			<attribute name="table:display">
+				<ref name="boolean"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="cellAddress">
+		<data type="string">
+			<param name="pattern">($?([^\. ']+|'([^']|'')+'))?\.$?[A-Z]+$?[0-9]+</param>
+		</data>
+	</define>
+	<define name="cellRangeAddress">
+		<choice>
+			<data type="string">
+				<param name="pattern">($?([^\. ']+|'([^']|'')+'))?\.$?[A-Z]+$?[0-9]+(:($?([^\. ']+|'([^']|'')+'))?\.$?[A-Z]+$?[0-9]+)?</param>
+			</data>
+			<data type="string">
+				<param name="pattern">($?([^\. ']+|'([^']|'')+'))?\.$?[0-9]+:($?([^\. ']+|'([^']|'')+'))?\.$?[0-9]+</param>
+			</data>
+			<data type="string">
+				<param name="pattern">($?([^\. ']+|'([^']|'')+'))?\.$?[A-Z]+:($?([^\. ']+|'([^']|'')+'))?\.$?[A-Z]+</param>
+			</data>
+		</choice>
+	</define>
+	<define name="cellRangeAddressList">
+		<data type="string"/>
+		<dc:description>Value is a space separated list of "cellRangeAddress" patterns</dc:description>
+	</define>
+	<define name="table-table-source">
+		<element name="table:table-source">
+			<ref name="table-table-source-attlist"/>
+			<ref name="table-linked-source-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="table-table-source-attlist">
+		<interleave>
+			<optional>
+				<attribute name="table:mode">
+					<choice>
+						<value>copy-all</value>
+						<value>copy-results-only</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:table-name">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="table-linked-source-attlist">
+		<interleave>
+			<attribute name="xlink:type">
+				<value>simple</value>
+			</attribute>
+			<attribute name="xlink:href">
+				<ref name="anyIRI"/>
+			</attribute>
+			<optional>
+				<attribute name="xlink:actuate">
+					<value>onRequest</value>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:filter-name">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:filter-options">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:refresh-delay">
+					<ref name="duration"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="table-scenario">
+		<element name="table:scenario">
+			<ref name="table-scenario-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="table-scenario-attlist">
+		<interleave>
+			<attribute name="table:scenario-ranges">
+				<ref name="cellRangeAddressList"/>
+			</attribute>
+			<attribute name="table:is-active">
+				<ref name="boolean"/>
+			</attribute>
+			<optional>
+				<attribute name="table:display-border">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:border-color">
+					<ref name="color"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:copy-back">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:copy-styles">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:copy-formulas">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:comment">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:protected">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="table-shapes">
+		<element name="table:shapes">
+			<oneOrMore>
+				<ref name="shape"/>
+			</oneOrMore>
+		</element>
+	</define>
+	<define name="table-cell-range-source">
+		<element name="table:cell-range-source">
+			<ref name="table-table-cell-range-source-attlist"/>
+			<ref name="table-linked-source-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="table-table-cell-range-source-attlist">
+		<interleave>
+			<attribute name="table:name">
+				<ref name="string"/>
+			</attribute>
+			<attribute name="table:last-column-spanned">
+				<ref name="positiveInteger"/>
+			</attribute>
+			<attribute name="table:last-row-spanned">
+				<ref name="positiveInteger"/>
+			</attribute>
+		</interleave>
+	</define>
+	<define name="table-detective">
+		<element name="table:detective">
+			<zeroOrMore>
+				<ref name="table-highlighted-range"/>
+			</zeroOrMore>
+			<zeroOrMore>
+				<ref name="table-operation"/>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="table-operation">
+		<element name="table:operation">
+			<ref name="table-operation-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="table-operation-attlist">
+		<interleave>
+			<attribute name="table:name">
+				<choice>
+					<value>trace-dependents</value>
+					<value>remove-dependents</value>
+					<value>trace-precedents</value>
+					<value>remove-precedents</value>
+					<value>trace-errors</value>
+				</choice>
+			</attribute>
+			<attribute name="table:index">
+				<ref name="nonNegativeInteger"/>
+			</attribute>
+		</interleave>
+	</define>
+	<define name="table-highlighted-range">
+		<element name="table:highlighted-range">
+			<choice>
+				<group>
+					<ref name="table-highlighted-range-attlist"/>
+				</group>
+				<group>
+					<ref name="table-highlighted-range-attlist-invalid"/>
+				</group>
+			</choice>
+			<empty/>
+		</element>
+	</define>
+	<define name="table-highlighted-range-attlist">
+		<interleave>
+			<optional>
+				<attribute name="table:cell-range-address">
+					<ref name="cellRangeAddress"/>
+				</attribute>
+			</optional>
+			<attribute name="table:direction">
+				<choice>
+					<value>from-another-table</value>
+					<value>to-another-table</value>
+					<value>from-same-table</value>
+				</choice>
+			</attribute>
+			<optional>
+				<attribute name="table:contains-error">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="table-highlighted-range-attlist-invalid">
+		<attribute name="table:marked-invalid">
+			<ref name="boolean"/>
+		</attribute>
+	</define>
+	<define name="office-spreadsheet-attlist">
+		<optional>
+			<attribute name="table:structure-protected">
+				<ref name="boolean"/>
+			</attribute>
+		</optional>
+		<optional>
+			<attribute name="table:protection-key">
+				<ref name="string"/>
+			</attribute>
+		</optional>
+		<optional>
+			<attribute name="table:protection-key-digest-algorithm">
+				<ref name="anyIRI"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="table-calculation-settings">
+		<element name="table:calculation-settings">
+			<ref name="table-calculation-setting-attlist"/>
+			<optional>
+				<ref name="table-null-date"/>
+			</optional>
+			<optional>
+				<ref name="table-iteration"/>
+			</optional>
+		</element>
+	</define>
+	<define name="table-calculation-setting-attlist">
+		<interleave>
+			<optional>
+				<attribute name="table:case-sensitive">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:precision-as-shown">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:search-criteria-must-apply-to-whole-cell">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:automatic-find-labels">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:use-regular-expressions">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:use-wildcards">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:null-year">
+					<ref name="positiveInteger"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="table-null-date">
+		<element name="table:null-date">
+			<optional>
+				<attribute name="table:value-type">
+					<value>date</value>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:date-value">
+					<ref name="date"/>
+				</attribute>
+			</optional>
+			<empty/>
+		</element>
+	</define>
+	<define name="table-iteration">
+		<element name="table:iteration">
+			<optional>
+				<attribute name="table:status">
+					<choice>
+						<value>enable</value>
+						<value>disable</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:steps">
+					<ref name="positiveInteger"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:maximum-difference">
+					<ref name="double"/>
+				</attribute>
+			</optional>
+			<empty/>
+		</element>
+	</define>
+	<define name="table-content-validations">
+		<element name="table:content-validations">
+			<oneOrMore>
+				<ref name="table-content-validation"/>
+			</oneOrMore>
+		</element>
+	</define>
+	<define name="table-content-validation">
+		<element name="table:content-validation">
+			<ref name="table-validation-attlist"/>
+			<optional>
+				<ref name="table-help-message"/>
+			</optional>
+			<optional>
+				<choice>
+					<ref name="table-error-message"/>
+					<group>
+						<ref name="table-error-macro"/>
+						<ref name="office-event-listeners"/>
+					</group>
+				</choice>
+			</optional>
+		</element>
+	</define>
+	<define name="table-validation-attlist">
+		<interleave>
+			<attribute name="table:name">
+				<ref name="string"/>
+			</attribute>
+			<optional>
+				<attribute name="table:condition">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:base-cell-address">
+					<ref name="cellAddress"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:allow-empty-cell">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:display-list">
+					<choice>
+						<value>none</value>
+						<value>unsorted</value>
+						<value>sort-ascending</value>
+					</choice>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="table-help-message">
+		<element name="table:help-message">
+			<optional>
+				<attribute name="table:title">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:display">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<zeroOrMore>
+				<ref name="text-p"/>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="table-error-message">
+		<element name="table:error-message">
+			<optional>
+				<attribute name="table:title">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:display">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:message-type">
+					<choice>
+						<value>stop</value>
+						<value>warning</value>
+						<value>information</value>
+					</choice>
+				</attribute>
+			</optional>
+			<zeroOrMore>
+				<ref name="text-p"/>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="table-error-macro">
+		<element name="table:error-macro">
+			<optional>
+				<attribute name="table:execute">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+		</element>
+	</define>
+	<define name="table-label-ranges">
+		<element name="table:label-ranges">
+			<zeroOrMore>
+				<ref name="table-label-range"/>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="table-label-range">
+		<element name="table:label-range">
+			<ref name="table-label-range-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="table-label-range-attlist">
+		<interleave>
+			<attribute name="table:label-cell-range-address">
+				<ref name="cellRangeAddress"/>
+			</attribute>
+			<attribute name="table:data-cell-range-address">
+				<ref name="cellRangeAddress"/>
+			</attribute>
+			<attribute name="table:orientation">
+				<choice>
+					<value>column</value>
+					<value>row</value>
+				</choice>
+			</attribute>
+		</interleave>
+	</define>
+	<define name="table-named-expressions">
+		<element name="table:named-expressions">
+			<zeroOrMore>
+				<choice>
+					<ref name="table-named-range"/>
+					<ref name="table-named-expression"/>
+				</choice>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="table-named-range">
+		<element name="table:named-range">
+			<ref name="table-named-range-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="table-named-range-attlist">
+		<attribute name="table:name">
+			<ref name="string"/>
+		</attribute>
+		<attribute name="table:cell-range-address">
+			<ref name="cellRangeAddress"/>
+		</attribute>
+		<optional>
+			<attribute name="table:base-cell-address">
+				<ref name="cellAddress"/>
+			</attribute>
+		</optional>
+		<optional>
+			<attribute name="table:range-usable-as">
+				<choice>
+					<value>none</value>
+					<list>
+						<oneOrMore>
+							<choice>
+								<value>print-range</value>
+								<value>filter</value>
+								<value>repeat-row</value>
+								<value>repeat-column</value>
+							</choice>
+						</oneOrMore>
+					</list>
+				</choice>
+			</attribute>
+		</optional>
+	</define>
+	<define name="table-named-expression">
+		<element name="table:named-expression">
+			<ref name="table-named-expression-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="table-named-expression-attlist">
+		<attribute name="table:name">
+			<ref name="string"/>
+		</attribute>
+		<attribute name="table:expression">
+			<ref name="string"/>
+		</attribute>
+		<optional>
+			<attribute name="table:base-cell-address">
+				<ref name="cellAddress"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="table-database-ranges">
+		<element name="table:database-ranges">
+			<zeroOrMore>
+				<ref name="table-database-range"/>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="table-database-range">
+		<element name="table:database-range">
+			<ref name="table-database-range-attlist"/>
+			<optional>
+				<choice>
+					<ref name="table-database-source-sql"/>
+					<ref name="table-database-source-table"/>
+					<ref name="table-database-source-query"/>
+				</choice>
+			</optional>
+			<optional>
+				<ref name="table-filter"/>
+			</optional>
+			<optional>
+				<ref name="table-sort"/>
+			</optional>
+			<optional>
+				<ref name="table-subtotal-rules"/>
+			</optional>
+		</element>
+	</define>
+	<define name="table-database-range-attlist">
+		<interleave>
+			<optional>
+				<attribute name="table:name">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:is-selection">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:on-update-keep-styles">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:on-update-keep-size">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:has-persistent-data">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:orientation">
+					<choice>
+						<value>column</value>
+						<value>row</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:contains-header">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:display-filter-buttons">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<attribute name="table:target-range-address">
+				<ref name="cellRangeAddress"/>
+			</attribute>
+			<optional>
+				<attribute name="table:refresh-delay">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="table-database-source-sql">
+		<element name="table:database-source-sql">
+			<ref name="table-database-source-sql-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="table-database-source-sql-attlist">
+		<interleave>
+			<attribute name="table:database-name">
+				<ref name="string"/>
+			</attribute>
+			<attribute name="table:sql-statement">
+				<ref name="string"/>
+			</attribute>
+			<optional>
+				<attribute name="table:parse-sql-statement">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="table-database-source-query">
+		<element name="table:database-source-table">
+			<ref name="table-database-source-table-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="table-database-source-table-attlist">
+		<interleave>
+			<attribute name="table:database-name">
+				<ref name="string"/>
+			</attribute>
+			<attribute name="table:database-table-name">
+				<ref name="string"/>
+			</attribute>
+		</interleave>
+	</define>
+	<define name="table-database-source-table">
+		<element name="table:database-source-query">
+			<ref name="table-database-source-query-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="table-database-source-query-attlist">
+		<interleave>
+			<attribute name="table:database-name">
+				<ref name="string"/>
+			</attribute>
+			<attribute name="table:query-name">
+				<ref name="string"/>
+			</attribute>
+		</interleave>
+	</define>
+	<define name="table-sort">
+		<element name="table:sort">
+			<ref name="table-sort-attlist"/>
+			<oneOrMore>
+				<ref name="table-sort-by"/>
+			</oneOrMore>
+		</element>
+	</define>
+	<define name="table-sort-attlist">
+		<interleave>
+			<optional>
+				<attribute name="table:bind-styles-to-content">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:target-range-address">
+					<ref name="cellRangeAddress"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:case-sensitive">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:language">
+					<ref name="languageCode"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:country">
+					<ref name="countryCode"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:script">
+					<ref name="scriptCode"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:rfc-language-tag">
+					<ref name="language"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:algorithm">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:embedded-number-behavior">
+					<choice>
+						<value>alpha-numeric</value>
+						<value>integer</value>
+						<value>double</value>
+					</choice>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="table-sort-by">
+		<element name="table:sort-by">
+			<ref name="table-sort-by-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="table-sort-by-attlist">
+		<interleave>
+			<attribute name="table:field-number">
+				<ref name="nonNegativeInteger"/>
+			</attribute>
+			<optional>
+				<attribute name="table:data-type">
+					<choice>
+						<value>text</value>
+						<value>number</value>
+						<value>automatic</value>
+						<ref name="string"/>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:order">
+					<choice>
+						<value>ascending</value>
+						<value>descending</value>
+					</choice>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="table-subtotal-rules">
+		<element name="table:subtotal-rules">
+			<ref name="table-subtotal-rules-attlist"/>
+			<optional>
+				<ref name="table-sort-groups"/>
+			</optional>
+			<zeroOrMore>
+				<ref name="table-subtotal-rule"/>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="table-subtotal-rules-attlist">
+		<interleave>
+			<optional>
+				<attribute name="table:bind-styles-to-content">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:case-sensitive">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:page-breaks-on-group-change">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="table-sort-groups">
+		<element name="table:sort-groups">
+			<ref name="table-sort-groups-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="table-sort-groups-attlist">
+		<interleave>
+			<optional>
+				<attribute name="table:data-type">
+					<choice>
+						<value>text</value>
+						<value>number</value>
+						<value>automatic</value>
+						<ref name="string"/>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:order">
+					<choice>
+						<value>ascending</value>
+						<value>descending</value>
+					</choice>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="table-subtotal-rule">
+		<element name="table:subtotal-rule">
+			<ref name="table-subtotal-rule-attlist"/>
+			<zeroOrMore>
+				<ref name="table-subtotal-field"/>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="table-subtotal-rule-attlist">
+		<attribute name="table:group-by-field-number">
+			<ref name="nonNegativeInteger"/>
+		</attribute>
+	</define>
+	<define name="table-subtotal-field">
+		<element name="table:subtotal-field">
+			<ref name="table-subtotal-field-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="table-subtotal-field-attlist">
+		<interleave>
+			<attribute name="table:field-number">
+				<ref name="nonNegativeInteger"/>
+			</attribute>
+			<attribute name="table:function">
+				<choice>
+					<value>average</value>
+					<value>count</value>
+					<value>countnums</value>
+					<value>max</value>
+					<value>min</value>
+					<value>product</value>
+					<value>stdev</value>
+					<value>stdevp</value>
+					<value>sum</value>
+					<value>var</value>
+					<value>varp</value>
+					<ref name="string"/>
+				</choice>
+			</attribute>
+		</interleave>
+	</define>
+	<define name="table-filter">
+		<element name="table:filter">
+			<ref name="table-filter-attlist"/>
+			<choice>
+				<ref name="table-filter-condition"/>
+				<ref name="table-filter-and"/>
+				<ref name="table-filter-or"/>
+			</choice>
+		</element>
+	</define>
+	<define name="table-filter-attlist">
+		<interleave>
+			<optional>
+				<attribute name="table:target-range-address">
+					<ref name="cellRangeAddress"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:condition-source">
+					<choice>
+						<value>self</value>
+						<value>cell-range</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:condition-source-range-address">
+					<ref name="cellRangeAddress"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:display-duplicates">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="table-filter-and">
+		<element name="table:filter-and">
+			<oneOrMore>
+				<choice>
+					<ref name="table-filter-or"/>
+					<ref name="table-filter-condition"/>
+				</choice>
+			</oneOrMore>
+		</element>
+	</define>
+	<define name="table-filter-or">
+		<element name="table:filter-or">
+			<oneOrMore>
+				<choice>
+					<ref name="table-filter-and"/>
+					<ref name="table-filter-condition"/>
+				</choice>
+			</oneOrMore>
+		</element>
+	</define>
+	<define name="table-filter-condition">
+		<element name="table:filter-condition">
+			<ref name="table-filter-condition-attlist"/>
+			<zeroOrMore>
+				<ref name="table-filter-set-item"/>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="table-filter-condition-attlist">
+		<interleave>
+			<attribute name="table:field-number">
+				<ref name="nonNegativeInteger"/>
+			</attribute>
+			<attribute name="table:value">
+				<choice>
+					<ref name="string"/>
+					<ref name="double"/>
+				</choice>
+			</attribute>
+			<attribute name="table:operator">
+				<ref name="string"/>
+			</attribute>
+			<optional>
+				<attribute name="table:case-sensitive">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:data-type">
+					<choice>
+						<value>text</value>
+						<value>number</value>
+					</choice>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="table-filter-set-item">
+		<element name="table:filter-set-item">
+			<attribute name="table:value">
+				<ref name="string"/>
+			</attribute>
+			<empty/>
+		</element>
+	</define>
+	<define name="table-data-pilot-tables">
+		<element name="table:data-pilot-tables">
+			<zeroOrMore>
+				<ref name="table-data-pilot-table"/>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="table-data-pilot-table">
+		<element name="table:data-pilot-table">
+			<ref name="table-data-pilot-table-attlist"/>
+			<optional>
+				<choice>
+					<ref name="table-database-source-sql"/>
+					<ref name="table-database-source-table"/>
+					<ref name="table-database-source-query"/>
+					<ref name="table-source-service"/>
+					<ref name="table-source-cell-range"/>
+				</choice>
+			</optional>
+			<oneOrMore>
+				<ref name="table-data-pilot-field"/>
+			</oneOrMore>
+		</element>
+	</define>
+	<define name="table-data-pilot-table-attlist">
+		<interleave>
+			<attribute name="table:name">
+				<ref name="string"/>
+			</attribute>
+			<optional>
+				<attribute name="table:application-data">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:grand-total">
+					<choice>
+						<value>none</value>
+						<value>row</value>
+						<value>column</value>
+						<value>both</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:ignore-empty-rows">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:identify-categories">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<attribute name="table:target-range-address">
+				<ref name="cellRangeAddress"/>
+			</attribute>
+			<optional>
+				<attribute name="table:buttons">
+					<ref name="cellRangeAddressList"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:show-filter-button">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:drill-down-on-double-click">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="table-source-cell-range">
+		<element name="table:source-cell-range">
+			<ref name="table-source-cell-range-attlist"/>
+			<optional>
+				<ref name="table-filter"/>
+			</optional>
+		</element>
+	</define>
+	<define name="table-source-cell-range-attlist">
+		<attribute name="table:cell-range-address">
+			<ref name="cellRangeAddress"/>
+		</attribute>
+	</define>
+	<define name="table-source-service">
+		<element name="table:source-service">
+			<ref name="table-source-service-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="table-source-service-attlist">
+		<interleave>
+			<attribute name="table:name">
+				<ref name="string"/>
+			</attribute>
+			<attribute name="table:source-name">
+				<ref name="string"/>
+			</attribute>
+			<attribute name="table:object-name">
+				<ref name="string"/>
+			</attribute>
+			<optional>
+				<attribute name="table:user-name">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:password">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="table-data-pilot-field">
+		<element name="table:data-pilot-field">
+			<ref name="table-data-pilot-field-attlist"/>
+			<optional>
+				<ref name="table-data-pilot-level"/>
+			</optional>
+			<optional>
+				<ref name="table-data-pilot-field-reference"/>
+			</optional>
+			<optional>
+				<ref name="table-data-pilot-groups"/>
+			</optional>
+		</element>
+	</define>
+	<define name="table-data-pilot-field-attlist">
+		<interleave>
+			<attribute name="table:source-field-name">
+				<ref name="string"/>
+			</attribute>
+			<choice>
+				<attribute name="table:orientation">
+					<choice>
+						<value>row</value>
+						<value>column</value>
+						<value>data</value>
+						<value>hidden</value>
+					</choice>
+				</attribute>
+				<group>
+					<attribute name="table:orientation">
+						<value>page</value>
+					</attribute>
+					<attribute name="table:selected-page">
+						<ref name="string"/>
+					</attribute>
+				</group>
+			</choice>
+			<optional>
+				<attribute name="table:is-data-layout-field">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:function">
+					<choice>
+						<value>auto</value>
+						<value>average</value>
+						<value>count</value>
+						<value>countnums</value>
+						<value>max</value>
+						<value>min</value>
+						<value>product</value>
+						<value>stdev</value>
+						<value>stdevp</value>
+						<value>sum</value>
+						<value>var</value>
+						<value>varp</value>
+						<ref name="string"/>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:used-hierarchy">
+					<ref name="integer"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="table-data-pilot-level">
+		<element name="table:data-pilot-level">
+			<ref name="table-data-pilot-level-attlist"/>
+			<optional>
+				<ref name="table-data-pilot-subtotals"/>
+			</optional>
+			<optional>
+				<ref name="table-data-pilot-members"/>
+			</optional>
+			<optional>
+				<ref name="table-data-pilot-display-info"/>
+			</optional>
+			<optional>
+				<ref name="table-data-pilot-sort-info"/>
+			</optional>
+			<optional>
+				<ref name="table-data-pilot-layout-info"/>
+			</optional>
+		</element>
+	</define>
+	<define name="table-data-pilot-level-attlist">
+		<optional>
+			<attribute name="table:show-empty">
+				<ref name="boolean"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="table-data-pilot-subtotals">
+		<element name="table:data-pilot-subtotals">
+			<zeroOrMore>
+				<ref name="table-data-pilot-subtotal"/>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="table-data-pilot-subtotal">
+		<element name="table:data-pilot-subtotal">
+			<ref name="table-data-pilot-subtotal-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="table-data-pilot-subtotal-attlist">
+		<attribute name="table:function">
+			<choice>
+				<value>auto</value>
+				<value>average</value>
+				<value>count</value>
+				<value>countnums</value>
+				<value>max</value>
+				<value>min</value>
+				<value>product</value>
+				<value>stdev</value>
+				<value>stdevp</value>
+				<value>sum</value>
+				<value>var</value>
+				<value>varp</value>
+				<ref name="string"/>
+			</choice>
+		</attribute>
+	</define>
+	<define name="table-data-pilot-members">
+		<element name="table:data-pilot-members">
+			<zeroOrMore>
+				<ref name="table-data-pilot-member"/>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="table-data-pilot-member">
+		<element name="table:data-pilot-member">
+			<ref name="table-data-pilot-member-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="table-data-pilot-member-attlist">
+		<interleave>
+			<attribute name="table:name">
+				<ref name="string"/>
+			</attribute>
+			<optional>
+				<attribute name="table:display">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:show-details">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="table-data-pilot-display-info">
+		<element name="table:data-pilot-display-info">
+			<ref name="table-data-pilot-display-info-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="table-data-pilot-display-info-attlist">
+		<interleave>
+			<attribute name="table:enabled">
+				<ref name="boolean"/>
+			</attribute>
+			<attribute name="table:data-field">
+				<ref name="string"/>
+			</attribute>
+			<attribute name="table:member-count">
+				<ref name="nonNegativeInteger"/>
+			</attribute>
+			<attribute name="table:display-member-mode">
+				<choice>
+					<value>from-top</value>
+					<value>from-bottom</value>
+				</choice>
+			</attribute>
+		</interleave>
+	</define>
+	<define name="table-data-pilot-sort-info">
+		<element name="table:data-pilot-sort-info">
+			<ref name="table-data-pilot-sort-info-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="table-data-pilot-sort-info-attlist">
+		<interleave>
+			<choice>
+				<group>
+					<attribute name="table:sort-mode">
+						<value>data</value>
+					</attribute>
+					<attribute name="table:data-field">
+						<ref name="string"/>
+					</attribute>
+				</group>
+				<attribute name="table:sort-mode">
+					<choice>
+						<value>none</value>
+						<value>manual</value>
+						<value>name</value>
+					</choice>
+				</attribute>
+			</choice>
+			<attribute name="table:order">
+				<choice>
+					<value>ascending</value>
+					<value>descending</value>
+				</choice>
+			</attribute>
+		</interleave>
+	</define>
+	<define name="table-data-pilot-layout-info">
+		<element name="table:data-pilot-layout-info">
+			<ref name="table-data-pilot-layout-info-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="table-data-pilot-layout-info-attlist">
+		<interleave>
+			<attribute name="table:layout-mode">
+				<choice>
+					<value>tabular-layout</value>
+					<value>outline-subtotals-top</value>
+					<value>outline-subtotals-bottom</value>
+				</choice>
+			</attribute>
+			<attribute name="table:add-empty-lines">
+				<ref name="boolean"/>
+			</attribute>
+		</interleave>
+	</define>
+	<define name="table-data-pilot-field-reference">
+		<element name="table:data-pilot-field-reference">
+			<ref name="table-data-pilot-field-reference-attlist"/>
+		</element>
+	</define>
+	<define name="table-data-pilot-field-reference-attlist">
+		<interleave>
+			<attribute name="table:field-name">
+				<ref name="string"/>
+			</attribute>
+			<choice>
+				<group>
+					<attribute name="table:member-type">
+						<value>named</value>
+					</attribute>
+					<attribute name="table:member-name">
+						<ref name="string"/>
+					</attribute>
+				</group>
+				<attribute name="table:member-type">
+					<choice>
+						<value>previous</value>
+						<value>next</value>
+					</choice>
+				</attribute>
+			</choice>
+			<attribute name="table:type">
+				<choice>
+					<value>none</value>
+					<value>member-difference</value>
+					<value>member-percentage</value>
+					<value>member-percentage-difference</value>
+					<value>running-total</value>
+					<value>row-percentage</value>
+					<value>column-percentage</value>
+					<value>total-percentage</value>
+					<value>index</value>
+				</choice>
+			</attribute>
+		</interleave>
+	</define>
+	<define name="table-data-pilot-groups">
+		<element name="table:data-pilot-groups">
+			<ref name="table-data-pilot-groups-attlist"/>
+			<oneOrMore>
+				<ref name="table-data-pilot-group"/>
+			</oneOrMore>
+		</element>
+	</define>
+	<define name="table-data-pilot-groups-attlist">
+		<interleave>
+			<attribute name="table:source-field-name">
+				<ref name="string"/>
+			</attribute>
+			<choice>
+				<attribute name="table:date-start">
+					<choice>
+						<ref name="dateOrDateTime"/>
+						<value>auto</value>
+					</choice>
+				</attribute>
+				<attribute name="table:start">
+					<choice>
+						<ref name="double"/>
+						<value>auto</value>
+					</choice>
+				</attribute>
+			</choice>
+			<choice>
+				<attribute name="table:date-end">
+					<choice>
+						<ref name="dateOrDateTime"/>
+						<value>auto</value>
+					</choice>
+				</attribute>
+				<attribute name="table:end">
+					<choice>
+						<ref name="double"/>
+						<value>auto</value>
+					</choice>
+				</attribute>
+			</choice>
+			<attribute name="table:step">
+				<ref name="double"/>
+			</attribute>
+			<attribute name="table:grouped-by">
+				<choice>
+					<value>seconds</value>
+					<value>minutes</value>
+					<value>hours</value>
+					<value>days</value>
+					<value>months</value>
+					<value>quarters</value>
+					<value>years</value>
+				</choice>
+			</attribute>
+		</interleave>
+	</define>
+	<define name="table-data-pilot-group">
+		<element name="table:data-pilot-group">
+			<ref name="table-data-pilot-group-attlist"/>
+			<oneOrMore>
+				<ref name="table-data-pilot-group-member"/>
+			</oneOrMore>
+		</element>
+	</define>
+	<define name="table-data-pilot-group-attlist">
+		<attribute name="table:name">
+			<ref name="string"/>
+		</attribute>
+	</define>
+	<define name="table-data-pilot-group-member">
+		<element name="table:data-pilot-group-member">
+			<ref name="table-data-pilot-group-member-attlist"/>
+		</element>
+	</define>
+	<define name="table-data-pilot-group-member-attlist">
+		<attribute name="table:name">
+			<ref name="string"/>
+		</attribute>
+	</define>
+	<define name="table-consolidation">
+		<element name="table:consolidation">
+			<ref name="table-consolidation-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="table-consolidation-attlist">
+		<interleave>
+			<attribute name="table:function">
+				<choice>
+					<value>average</value>
+					<value>count</value>
+					<value>countnums</value>
+					<value>max</value>
+					<value>min</value>
+					<value>product</value>
+					<value>stdev</value>
+					<value>stdevp</value>
+					<value>sum</value>
+					<value>var</value>
+					<value>varp</value>
+					<ref name="string"/>
+				</choice>
+			</attribute>
+			<attribute name="table:source-cell-range-addresses">
+				<ref name="cellRangeAddressList"/>
+			</attribute>
+			<attribute name="table:target-cell-address">
+				<ref name="cellAddress"/>
+			</attribute>
+			<optional>
+				<attribute name="table:use-labels">
+					<choice>
+						<value>none</value>
+						<value>row</value>
+						<value>column</value>
+						<value>both</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:link-to-source-data">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="table-dde-links">
+		<element name="table:dde-links">
+			<oneOrMore>
+				<ref name="table-dde-link"/>
+			</oneOrMore>
+		</element>
+	</define>
+	<define name="table-tracked-changes">
+		<element name="table:tracked-changes">
+			<ref name="table-tracked-changes-attlist"/>
+			<zeroOrMore>
+				<choice>
+					<ref name="table-cell-content-change"/>
+					<ref name="table-insertion"/>
+					<ref name="table-deletion"/>
+					<ref name="table-movement"/>
+				</choice>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="table-tracked-changes-attlist">
+		<optional>
+			<attribute name="table:track-changes">
+				<ref name="boolean"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="table-insertion">
+		<element name="table:insertion">
+			<ref name="table-insertion-attlist"/>
+			<ref name="common-table-change-attlist"/>
+			<ref name="office-change-info"/>
+			<optional>
+				<ref name="table-dependencies"/>
+			</optional>
+			<optional>
+				<ref name="table-deletions"/>
+			</optional>
+		</element>
+	</define>
+	<define name="table-insertion-attlist">
+		<interleave>
+			<attribute name="table:type">
+				<choice>
+					<value>row</value>
+					<value>column</value>
+					<value>table</value>
+				</choice>
+			</attribute>
+			<attribute name="table:position">
+				<ref name="integer"/>
+			</attribute>
+			<optional>
+				<attribute name="table:count">
+					<ref name="positiveInteger"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:table">
+					<ref name="integer"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="table-dependencies">
+		<element name="table:dependencies">
+			<oneOrMore>
+				<ref name="table-dependency"/>
+			</oneOrMore>
+		</element>
+	</define>
+	<define name="table-dependency">
+		<element name="table:dependency">
+			<attribute name="table:id">
+				<ref name="string"/>
+			</attribute>
+			<empty/>
+		</element>
+	</define>
+	<define name="table-deletions">
+		<element name="table:deletions">
+			<oneOrMore>
+				<choice>
+					<ref name="table-cell-content-deletion"/>
+					<ref name="table-change-deletion"/>
+				</choice>
+			</oneOrMore>
+		</element>
+	</define>
+	<define name="table-cell-content-deletion">
+		<element name="table:cell-content-deletion">
+			<optional>
+				<attribute name="table:id">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<ref name="table-cell-address"/>
+			</optional>
+			<optional>
+				<ref name="table-change-track-table-cell"/>
+			</optional>
+		</element>
+	</define>
+	<define name="table-change-deletion">
+		<element name="table:change-deletion">
+			<optional>
+				<attribute name="table:id">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<empty/>
+		</element>
+	</define>
+	<define name="table-deletion">
+		<element name="table:deletion">
+			<ref name="table-deletion-attlist"/>
+			<ref name="common-table-change-attlist"/>
+			<ref name="office-change-info"/>
+			<optional>
+				<ref name="table-dependencies"/>
+			</optional>
+			<optional>
+				<ref name="table-deletions"/>
+			</optional>
+			<optional>
+				<ref name="table-cut-offs"/>
+			</optional>
+		</element>
+	</define>
+	<define name="table-deletion-attlist">
+		<interleave>
+			<attribute name="table:type">
+				<choice>
+					<value>row</value>
+					<value>column</value>
+					<value>table</value>
+				</choice>
+			</attribute>
+			<attribute name="table:position">
+				<ref name="integer"/>
+			</attribute>
+			<optional>
+				<attribute name="table:table">
+					<ref name="integer"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:multi-deletion-spanned">
+					<ref name="integer"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="table-cut-offs">
+		<element name="table:cut-offs">
+			<choice>
+				<oneOrMore>
+					<ref name="table-movement-cut-off"/>
+				</oneOrMore>
+				<group>
+					<ref name="table-insertion-cut-off"/>
+					<zeroOrMore>
+						<ref name="table-movement-cut-off"/>
+					</zeroOrMore>
+				</group>
+			</choice>
+		</element>
+	</define>
+	<define name="table-insertion-cut-off">
+		<element name="table:insertion-cut-off">
+			<ref name="table-insertion-cut-off-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="table-insertion-cut-off-attlist">
+		<interleave>
+			<attribute name="table:id">
+				<ref name="string"/>
+			</attribute>
+			<attribute name="table:position">
+				<ref name="integer"/>
+			</attribute>
+		</interleave>
+	</define>
+	<define name="table-movement-cut-off">
+		<element name="table:movement-cut-off">
+			<ref name="table-movement-cut-off-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="table-movement-cut-off-attlist">
+		<choice>
+			<attribute name="table:position">
+				<ref name="integer"/>
+			</attribute>
+			<group>
+				<attribute name="table:start-position">
+					<ref name="integer"/>
+				</attribute>
+				<attribute name="table:end-position">
+					<ref name="integer"/>
+				</attribute>
+			</group>
+		</choice>
+	</define>
+	<define name="table-movement">
+		<element name="table:movement">
+			<ref name="common-table-change-attlist"/>
+			<ref name="table-source-range-address"/>
+			<ref name="table-target-range-address"/>
+			<ref name="office-change-info"/>
+			<optional>
+				<ref name="table-dependencies"/>
+			</optional>
+			<optional>
+				<ref name="table-deletions"/>
+			</optional>
+		</element>
+	</define>
+	<define name="table-source-range-address">
+		<element name="table:source-range-address">
+			<ref name="common-table-range-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="table-target-range-address">
+		<element name="table:target-range-address">
+			<ref name="common-table-range-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="common-table-range-attlist">
+		<choice>
+			<group>
+				<ref name="common-table-cell-address-attlist"/>
+			</group>
+			<group>
+				<ref name="common-table-cell-range-address-attlist"/>
+			</group>
+		</choice>
+	</define>
+	<define name="common-table-cell-address-attlist">
+		<attribute name="table:column">
+			<ref name="integer"/>
+		</attribute>
+		<attribute name="table:row">
+			<ref name="integer"/>
+		</attribute>
+		<attribute name="table:table">
+			<ref name="integer"/>
+		</attribute>
+	</define>
+	<define name="common-table-cell-range-address-attlist">
+		<attribute name="table:start-column">
+			<ref name="integer"/>
+		</attribute>
+		<attribute name="table:start-row">
+			<ref name="integer"/>
+		</attribute>
+		<attribute name="table:start-table">
+			<ref name="integer"/>
+		</attribute>
+		<attribute name="table:end-column">
+			<ref name="integer"/>
+		</attribute>
+		<attribute name="table:end-row">
+			<ref name="integer"/>
+		</attribute>
+		<attribute name="table:end-table">
+			<ref name="integer"/>
+		</attribute>
+	</define>
+	<define name="table-change-track-table-cell">
+		<element name="table:change-track-table-cell">
+			<ref name="table-change-track-table-cell-attlist"/>
+			<zeroOrMore>
+				<ref name="text-p"/>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="table-change-track-table-cell-attlist">
+		<interleave>
+			<optional>
+				<attribute name="table:cell-address">
+					<ref name="cellAddress"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:matrix-covered">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:formula">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:number-matrix-columns-spanned">
+					<ref name="positiveInteger"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:number-matrix-rows-spanned">
+					<ref name="positiveInteger"/>
+				</attribute>
+			</optional>
+			<optional>
+				<ref name="common-value-and-type-attlist"/>
+			</optional>
+		</interleave>
+	</define>
+	<define name="table-cell-content-change">
+		<element name="table:cell-content-change">
+			<ref name="common-table-change-attlist"/>
+			<ref name="table-cell-address"/>
+			<ref name="office-change-info"/>
+			<optional>
+				<ref name="table-dependencies"/>
+			</optional>
+			<optional>
+				<ref name="table-deletions"/>
+			</optional>
+			<ref name="table-previous"/>
+		</element>
+	</define>
+	<define name="table-cell-address">
+		<element name="table:cell-address">
+			<ref name="common-table-cell-address-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="table-previous">
+		<element name="table:previous">
+			<optional>
+				<attribute name="table:id">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<ref name="table-change-track-table-cell"/>
+		</element>
+	</define>
+	<define name="common-table-change-attlist">
+		<interleave>
+			<attribute name="table:id">
+				<ref name="string"/>
+			</attribute>
+			<optional>
+				<attribute name="table:acceptance-state">
+					<choice>
+						<value>accepted</value>
+						<value>rejected</value>
+						<value>pending</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:rejecting-change-id">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="style-handout-master">
+		<element name="style:handout-master">
+			<ref name="common-presentation-header-footer-attlist"/>
+			<ref name="style-handout-master-attlist"/>
+			<zeroOrMore>
+				<ref name="shape"/>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="style-handout-master-attlist">
+		<interleave>
+			<optional>
+				<attribute name="presentation:presentation-page-layout-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+			<attribute name="style:page-layout-name">
+				<ref name="styleNameRef"/>
+			</attribute>
+			<optional>
+				<attribute name="draw:style-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="draw-layer-set">
+		<element name="draw:layer-set">
+			<zeroOrMore>
+				<ref name="draw-layer"/>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="draw-layer">
+		<element name="draw:layer">
+			<ref name="draw-layer-attlist"/>
+			<optional>
+				<ref name="svg-title"/>
+			</optional>
+			<optional>
+				<ref name="svg-desc"/>
+			</optional>
+		</element>
+	</define>
+	<define name="draw-layer-attlist">
+		<interleave>
+			<attribute name="draw:name">
+				<ref name="string"/>
+			</attribute>
+			<optional>
+				<attribute name="draw:protected">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:display">
+					<choice>
+						<value>always</value>
+						<value>screen</value>
+						<value>printer</value>
+						<value>none</value>
+					</choice>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="draw-page">
+		<element name="draw:page">
+			<ref name="common-presentation-header-footer-attlist"/>
+			<ref name="draw-page-attlist"/>
+			<optional>
+				<ref name="svg-title"/>
+			</optional>
+			<optional>
+				<ref name="svg-desc"/>
+			</optional>
+			<optional>
+				<ref name="draw-layer-set"/>
+			</optional>
+			<optional>
+				<ref name="office-forms"/>
+			</optional>
+			<zeroOrMore>
+				<ref name="shape"/>
+			</zeroOrMore>
+			<optional>
+				<choice>
+					<ref name="presentation-animations"/>
+					<ref name="animation-element"/>
+				</choice>
+			</optional>
+			<optional>
+				<ref name="presentation-notes"/>
+			</optional>
+		</element>
+	</define>
+	<define name="draw-page-attlist">
+		<interleave>
+			<optional>
+				<attribute name="draw:name">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:style-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+			<attribute name="draw:master-page-name">
+				<ref name="styleNameRef"/>
+			</attribute>
+			<optional>
+				<attribute name="presentation:presentation-page-layout-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+			<optional>
+				<group>
+					<ref name="xml-id"/>
+					<optional>
+						<attribute name="draw:id">
+							<ref name="NCName"/>
+						</attribute>
+					</optional>
+				</group>
+			</optional>
+			<optional>
+				<attribute name="draw:nav-order">
+					<ref name="IDREFS"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="common-presentation-header-footer-attlist">
+		<interleave>
+			<optional>
+				<attribute name="presentation:use-header-name">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="presentation:use-footer-name">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="presentation:use-date-time-name">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="shape">
+		<choice>
+			<ref name="shape-instance"/>
+			<ref name="draw-a"/>
+		</choice>
+	</define>
+	<define name="shape-instance">
+		<choice>
+			<ref name="draw-rect"/>
+			<ref name="draw-line"/>
+			<ref name="draw-polyline"/>
+			<ref name="draw-polygon"/>
+			<ref name="draw-regular-polygon"/>
+			<ref name="draw-path"/>
+			<ref name="draw-circle"/>
+			<ref name="draw-ellipse"/>
+			<ref name="draw-g"/>
+			<ref name="draw-page-thumbnail"/>
+			<ref name="draw-frame"/>
+			<ref name="draw-measure"/>
+			<ref name="draw-caption"/>
+			<ref name="draw-connector"/>
+			<ref name="draw-control"/>
+			<ref name="dr3d-scene"/>
+			<ref name="draw-custom-shape"/>
+		</choice>
+	</define>
+	<define name="draw-rect">
+		<element name="draw:rect">
+			<ref name="draw-rect-attlist"/>
+			<ref name="common-draw-position-attlist"/>
+			<ref name="common-draw-size-attlist"/>
+			<ref name="common-draw-shape-with-text-and-styles-attlist"/>
+			<ref name="common-draw-caption-id-attlist"/>
+			<optional>
+				<ref name="svg-title"/>
+			</optional>
+			<optional>
+				<ref name="svg-desc"/>
+			</optional>
+			<optional>
+				<ref name="office-event-listeners"/>
+			</optional>
+			<zeroOrMore>
+				<ref name="draw-glue-point"/>
+			</zeroOrMore>
+			<ref name="draw-text"/>
+		</element>
+	</define>
+	<define name="draw-rect-attlist">
+		<choice>
+			<optional>
+				<attribute name="draw:corner-radius">
+					<ref name="nonNegativeLength"/>
+				</attribute>
+			</optional>
+			<group>
+				<optional>
+					<attribute name="svg:rx">
+						<ref name="nonNegativeLength"/>
+					</attribute>
+				</optional>
+				<optional>
+					<attribute name="svg:ry">
+						<ref name="nonNegativeLength"/>
+					</attribute>
+				</optional>
+			</group>
+		</choice>
+	</define>
+	<define name="draw-line">
+		<element name="draw:line">
+			<ref name="draw-line-attlist"/>
+			<ref name="common-draw-shape-with-text-and-styles-attlist"/>
+			<ref name="common-draw-caption-id-attlist"/>
+			<optional>
+				<ref name="svg-title"/>
+			</optional>
+			<optional>
+				<ref name="svg-desc"/>
+			</optional>
+			<optional>
+				<ref name="office-event-listeners"/>
+			</optional>
+			<zeroOrMore>
+				<ref name="draw-glue-point"/>
+			</zeroOrMore>
+			<ref name="draw-text"/>
+		</element>
+	</define>
+	<define name="draw-line-attlist">
+		<interleave>
+			<attribute name="svg:x1">
+				<ref name="coordinate"/>
+			</attribute>
+			<attribute name="svg:y1">
+				<ref name="coordinate"/>
+			</attribute>
+			<attribute name="svg:x2">
+				<ref name="coordinate"/>
+			</attribute>
+			<attribute name="svg:y2">
+				<ref name="coordinate"/>
+			</attribute>
+		</interleave>
+	</define>
+	<define name="draw-polyline">
+		<element name="draw:polyline">
+			<ref name="common-draw-points-attlist"/>
+			<ref name="common-draw-position-attlist"/>
+			<ref name="common-draw-size-attlist"/>
+			<ref name="common-draw-viewbox-attlist"/>
+			<ref name="common-draw-shape-with-text-and-styles-attlist"/>
+			<ref name="common-draw-caption-id-attlist"/>
+			<optional>
+				<ref name="svg-title"/>
+			</optional>
+			<optional>
+				<ref name="svg-desc"/>
+			</optional>
+			<optional>
+				<ref name="office-event-listeners"/>
+			</optional>
+			<zeroOrMore>
+				<ref name="draw-glue-point"/>
+			</zeroOrMore>
+			<ref name="draw-text"/>
+		</element>
+	</define>
+	<define name="common-draw-points-attlist">
+		<attribute name="draw:points">
+			<ref name="points"/>
+		</attribute>
+	</define>
+	<define name="draw-polygon">
+		<element name="draw:polygon">
+			<ref name="common-draw-points-attlist"/>
+			<ref name="common-draw-position-attlist"/>
+			<ref name="common-draw-size-attlist"/>
+			<ref name="common-draw-viewbox-attlist"/>
+			<ref name="common-draw-shape-with-text-and-styles-attlist"/>
+			<ref name="common-draw-caption-id-attlist"/>
+			<optional>
+				<ref name="svg-title"/>
+			</optional>
+			<optional>
+				<ref name="svg-desc"/>
+			</optional>
+			<optional>
+				<ref name="office-event-listeners"/>
+			</optional>
+			<zeroOrMore>
+				<ref name="draw-glue-point"/>
+			</zeroOrMore>
+			<ref name="draw-text"/>
+		</element>
+	</define>
+	<define name="draw-regular-polygon">
+		<element name="draw:regular-polygon">
+			<ref name="draw-regular-polygon-attlist"/>
+			<ref name="common-draw-position-attlist"/>
+			<ref name="common-draw-size-attlist"/>
+			<ref name="common-draw-shape-with-text-and-styles-attlist"/>
+			<ref name="common-draw-caption-id-attlist"/>
+			<optional>
+				<ref name="svg-title"/>
+			</optional>
+			<optional>
+				<ref name="svg-desc"/>
+			</optional>
+			<optional>
+				<ref name="office-event-listeners"/>
+			</optional>
+			<zeroOrMore>
+				<ref name="draw-glue-point"/>
+			</zeroOrMore>
+			<ref name="draw-text"/>
+		</element>
+	</define>
+	<define name="draw-regular-polygon-attlist">
+		<interleave>
+			<choice>
+				<attribute name="draw:concave">
+					<value>false</value>
+				</attribute>
+				<group>
+					<attribute name="draw:concave">
+						<value>true</value>
+					</attribute>
+					<ref name="draw-regular-polygon-sharpness-attlist"/>
+				</group>
+			</choice>
+			<attribute name="draw:corners">
+				<ref name="positiveInteger"/>
+			</attribute>
+		</interleave>
+	</define>
+	<define name="draw-regular-polygon-sharpness-attlist">
+		<attribute name="draw:sharpness">
+			<ref name="percent"/>
+		</attribute>
+	</define>
+	<define name="draw-path">
+		<element name="draw:path">
+			<ref name="common-draw-path-data-attlist"/>
+			<ref name="common-draw-position-attlist"/>
+			<ref name="common-draw-size-attlist"/>
+			<ref name="common-draw-viewbox-attlist"/>
+			<ref name="common-draw-shape-with-text-and-styles-attlist"/>
+			<ref name="common-draw-caption-id-attlist"/>
+			<optional>
+				<ref name="svg-title"/>
+			</optional>
+			<optional>
+				<ref name="svg-desc"/>
+			</optional>
+			<optional>
+				<ref name="office-event-listeners"/>
+			</optional>
+			<zeroOrMore>
+				<ref name="draw-glue-point"/>
+			</zeroOrMore>
+			<ref name="draw-text"/>
+		</element>
+	</define>
+	<define name="common-draw-path-data-attlist">
+		<attribute name="svg:d">
+			<ref name="pathData"/>
+		</attribute>
+	</define>
+	<define name="draw-circle">
+		<element name="draw:circle">
+			<choice>
+				<group>
+					<ref name="draw-circle-attlist"/>
+					<ref name="common-draw-circle-ellipse-pos-attlist"/>
+				</group>
+				<group>
+					<ref name="common-draw-position-attlist"/>
+					<ref name="common-draw-size-attlist"/>
+				</group>
+			</choice>
+			<ref name="common-draw-circle-ellipse-attlist"/>
+			<ref name="common-draw-shape-with-text-and-styles-attlist"/>
+			<ref name="common-draw-caption-id-attlist"/>
+			<optional>
+				<ref name="svg-title"/>
+			</optional>
+			<optional>
+				<ref name="svg-desc"/>
+			</optional>
+			<optional>
+				<ref name="office-event-listeners"/>
+			</optional>
+			<zeroOrMore>
+				<ref name="draw-glue-point"/>
+			</zeroOrMore>
+			<ref name="draw-text"/>
+		</element>
+	</define>
+	<define name="common-draw-circle-ellipse-pos-attlist">
+		<attribute name="svg:cx">
+			<ref name="coordinate"/>
+		</attribute>
+		<attribute name="svg:cy">
+			<ref name="coordinate"/>
+		</attribute>
+	</define>
+	<define name="draw-circle-attlist">
+		<attribute name="svg:r">
+			<ref name="length"/>
+		</attribute>
+	</define>
+	<define name="common-draw-circle-ellipse-attlist">
+		<interleave>
+			<optional>
+				<attribute name="draw:kind">
+					<choice>
+						<value>full</value>
+						<value>section</value>
+						<value>cut</value>
+						<value>arc</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:start-angle">
+					<ref name="angle"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:end-angle">
+					<ref name="angle"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="draw-ellipse">
+		<element name="draw:ellipse">
+			<choice>
+				<group>
+					<ref name="draw-ellipse-attlist"/>
+					<ref name="common-draw-circle-ellipse-pos-attlist"/>
+				</group>
+				<group>
+					<ref name="common-draw-position-attlist"/>
+					<ref name="common-draw-size-attlist"/>
+				</group>
+			</choice>
+			<ref name="common-draw-circle-ellipse-attlist"/>
+			<ref name="common-draw-shape-with-text-and-styles-attlist"/>
+			<ref name="common-draw-caption-id-attlist"/>
+			<optional>
+				<ref name="svg-title"/>
+			</optional>
+			<optional>
+				<ref name="svg-desc"/>
+			</optional>
+			<optional>
+				<ref name="office-event-listeners"/>
+			</optional>
+			<zeroOrMore>
+				<ref name="draw-glue-point"/>
+			</zeroOrMore>
+			<ref name="draw-text"/>
+		</element>
+	</define>
+	<define name="draw-ellipse-attlist">
+		<attribute name="svg:rx">
+			<ref name="length"/>
+		</attribute>
+		<attribute name="svg:ry">
+			<ref name="length"/>
+		</attribute>
+	</define>
+	<define name="draw-connector">
+		<element name="draw:connector">
+			<ref name="draw-connector-attlist"/>
+			<ref name="common-draw-shape-with-text-and-styles-attlist"/>
+			<ref name="common-draw-caption-id-attlist"/>
+			<ref name="common-draw-viewbox-attlist"/>
+			<optional>
+				<ref name="svg-title"/>
+			</optional>
+			<optional>
+				<ref name="svg-desc"/>
+			</optional>
+			<optional>
+				<ref name="office-event-listeners"/>
+			</optional>
+			<zeroOrMore>
+				<ref name="draw-glue-point"/>
+			</zeroOrMore>
+			<ref name="draw-text"/>
+		</element>
+	</define>
+	<define name="draw-connector-attlist">
+		<interleave>
+			<optional>
+				<attribute name="draw:type">
+					<choice>
+						<value>standard</value>
+						<value>lines</value>
+						<value>line</value>
+						<value>curve</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="svg:x1">
+					<ref name="coordinate"/>
+				</attribute>
+				<attribute name="svg:y1">
+					<ref name="coordinate"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:start-shape">
+					<ref name="IDREF"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:start-glue-point">
+					<ref name="nonNegativeInteger"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="svg:x2">
+					<ref name="coordinate"/>
+				</attribute>
+				<attribute name="svg:y2">
+					<ref name="coordinate"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:end-shape">
+					<ref name="IDREF"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:end-glue-point">
+					<ref name="nonNegativeInteger"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:line-skew">
+					<list>
+						<ref name="length"/>
+						<optional>
+							<ref name="length"/>
+							<optional>
+								<ref name="length"/>
+							</optional>
+						</optional>
+					</list>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="svg:d">
+					<ref name="pathData"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="draw-caption">
+		<element name="draw:caption">
+			<ref name="draw-caption-attlist"/>
+			<ref name="common-draw-position-attlist"/>
+			<ref name="common-draw-size-attlist"/>
+			<ref name="common-draw-shape-with-text-and-styles-attlist"/>
+			<ref name="common-draw-caption-id-attlist"/>
+			<optional>
+				<ref name="svg-title"/>
+			</optional>
+			<optional>
+				<ref name="svg-desc"/>
+			</optional>
+			<optional>
+				<ref name="office-event-listeners"/>
+			</optional>
+			<zeroOrMore>
+				<ref name="draw-glue-point"/>
+			</zeroOrMore>
+			<ref name="draw-text"/>
+		</element>
+	</define>
+	<define name="draw-caption-attlist">
+		<interleave>
+			<optional>
+				<attribute name="draw:caption-point-x">
+					<ref name="coordinate"/>
+				</attribute>
+				<attribute name="draw:caption-point-y">
+					<ref name="coordinate"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:corner-radius">
+					<ref name="nonNegativeLength"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="draw-measure">
+		<element name="draw:measure">
+			<ref name="draw-measure-attlist"/>
+			<ref name="common-draw-shape-with-text-and-styles-attlist"/>
+			<ref name="common-draw-caption-id-attlist"/>
+			<optional>
+				<ref name="svg-title"/>
+			</optional>
+			<optional>
+				<ref name="svg-desc"/>
+			</optional>
+			<optional>
+				<ref name="office-event-listeners"/>
+			</optional>
+			<zeroOrMore>
+				<ref name="draw-glue-point"/>
+			</zeroOrMore>
+			<ref name="draw-text"/>
+		</element>
+	</define>
+	<define name="draw-measure-attlist">
+		<interleave>
+			<attribute name="svg:x1">
+				<ref name="coordinate"/>
+			</attribute>
+			<attribute name="svg:y1">
+				<ref name="coordinate"/>
+			</attribute>
+			<attribute name="svg:x2">
+				<ref name="coordinate"/>
+			</attribute>
+			<attribute name="svg:y2">
+				<ref name="coordinate"/>
+			</attribute>
+		</interleave>
+	</define>
+	<define name="draw-control">
+		<element name="draw:control">
+			<ref name="draw-control-attlist"/>
+			<ref name="common-draw-position-attlist"/>
+			<ref name="common-draw-size-attlist"/>
+			<ref name="common-draw-shape-with-text-and-styles-attlist"/>
+			<ref name="common-draw-caption-id-attlist"/>
+			<optional>
+				<ref name="svg-title"/>
+			</optional>
+			<optional>
+				<ref name="svg-desc"/>
+			</optional>
+			<zeroOrMore>
+				<ref name="draw-glue-point"/>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="draw-control-attlist">
+		<attribute name="draw:control">
+			<ref name="IDREF"/>
+		</attribute>
+	</define>
+	<define name="draw-page-thumbnail">
+		<element name="draw:page-thumbnail">
+			<ref name="draw-page-thumbnail-attlist"/>
+			<ref name="common-draw-position-attlist"/>
+			<ref name="common-draw-size-attlist"/>
+			<ref name="presentation-shape-attlist"/>
+			<ref name="common-draw-shape-with-styles-attlist"/>
+			<ref name="common-draw-caption-id-attlist"/>
+			<optional>
+				<ref name="svg-title"/>
+			</optional>
+			<optional>
+				<ref name="svg-desc"/>
+			</optional>
+		</element>
+	</define>
+	<define name="draw-page-thumbnail-attlist">
+		<optional>
+			<attribute name="draw:page-number">
+				<ref name="positiveInteger"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="draw-g">
+		<element name="draw:g">
+			<ref name="draw-g-attlist"/>
+			<ref name="common-draw-z-index-attlist"/>
+			<ref name="common-draw-name-attlist"/>
+			<ref name="common-draw-id-attlist"/>
+			<ref name="common-draw-style-name-attlist"/>
+			<ref name="common-text-spreadsheet-shape-attlist"/>
+			<ref name="common-draw-caption-id-attlist"/>
+			<optional>
+				<ref name="svg-title"/>
+			</optional>
+			<optional>
+				<ref name="svg-desc"/>
+			</optional>
+			<optional>
+				<ref name="office-event-listeners"/>
+			</optional>
+			<zeroOrMore>
+				<ref name="draw-glue-point"/>
+			</zeroOrMore>
+			<zeroOrMore>
+				<ref name="shape"/>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="draw-g-attlist">
+		<optional>
+			<attribute name="svg:y">
+				<ref name="coordinate"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-draw-name-attlist">
+		<optional>
+			<attribute name="draw:name">
+				<ref name="string"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-draw-caption-id-attlist">
+		<optional>
+			<attribute name="draw:caption-id">
+				<ref name="IDREF"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-draw-position-attlist">
+		<optional>
+			<attribute name="svg:x">
+				<ref name="coordinate"/>
+			</attribute>
+		</optional>
+		<optional>
+			<attribute name="svg:y">
+				<ref name="coordinate"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-draw-size-attlist">
+		<optional>
+			<attribute name="svg:width">
+				<ref name="length"/>
+			</attribute>
+		</optional>
+		<optional>
+			<attribute name="svg:height">
+				<ref name="length"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-draw-transform-attlist">
+		<optional>
+			<attribute name="draw:transform">
+				<ref name="string"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-draw-viewbox-attlist">
+		<attribute name="svg:viewBox">
+			<list>
+				<ref name="integer"/>
+				<ref name="integer"/>
+				<ref name="integer"/>
+				<ref name="integer"/>
+			</list>
+		</attribute>
+	</define>
+	<define name="common-draw-style-name-attlist">
+		<choice>
+			<group>
+				<optional>
+					<attribute name="draw:style-name">
+						<ref name="styleNameRef"/>
+					</attribute>
+				</optional>
+				<optional>
+					<attribute name="draw:class-names">
+						<ref name="styleNameRefs"/>
+					</attribute>
+				</optional>
+			</group>
+			<group>
+				<optional>
+					<attribute name="presentation:style-name">
+						<ref name="styleNameRef"/>
+					</attribute>
+				</optional>
+				<optional>
+					<attribute name="presentation:class-names">
+						<ref name="styleNameRefs"/>
+					</attribute>
+				</optional>
+			</group>
+		</choice>
+	</define>
+	<define name="common-draw-text-style-name-attlist">
+		<optional>
+			<attribute name="draw:text-style-name">
+				<ref name="styleNameRef"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-draw-layer-name-attlist">
+		<optional>
+			<attribute name="draw:layer">
+				<ref name="string"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-draw-id-attlist">
+		<optional>
+			<group>
+				<ref name="xml-id"/>
+				<optional>
+					<attribute name="draw:id">
+						<ref name="NCName"/>
+					</attribute>
+				</optional>
+			</group>
+		</optional>
+	</define>
+	<define name="common-draw-z-index-attlist">
+		<optional>
+			<attribute name="draw:z-index">
+				<ref name="nonNegativeInteger"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-text-spreadsheet-shape-attlist">
+		<interleave>
+			<optional>
+				<attribute name="table:end-cell-address">
+					<ref name="cellAddress"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:end-x">
+					<ref name="coordinate"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:end-y">
+					<ref name="coordinate"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:table-background">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<ref name="common-text-anchor-attlist"/>
+		</interleave>
+	</define>
+	<define name="common-text-anchor-attlist">
+		<interleave>
+			<optional>
+				<attribute name="text:anchor-type">
+					<choice>
+						<value>page</value>
+						<value>frame</value>
+						<value>paragraph</value>
+						<value>char</value>
+						<value>as-char</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:anchor-page-number">
+					<ref name="positiveInteger"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="draw-text">
+		<zeroOrMore>
+			<choice>
+				<ref name="text-p"/>
+				<ref name="text-list"/>
+			</choice>
+		</zeroOrMore>
+	</define>
+	<define name="common-draw-shape-with-styles-attlist">
+		<ref name="common-draw-z-index-attlist"/>
+		<ref name="common-draw-id-attlist"/>
+		<ref name="common-draw-layer-name-attlist"/>
+		<ref name="common-draw-style-name-attlist"/>
+		<ref name="common-draw-transform-attlist"/>
+		<ref name="common-draw-name-attlist"/>
+		<ref name="common-text-spreadsheet-shape-attlist"/>
+	</define>
+	<define name="common-draw-shape-with-text-and-styles-attlist">
+		<ref name="common-draw-shape-with-styles-attlist"/>
+		<ref name="common-draw-text-style-name-attlist"/>
+	</define>
+	<define name="draw-glue-point">
+		<element name="draw:glue-point">
+			<ref name="draw-glue-point-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="draw-glue-point-attlist">
+		<interleave>
+			<attribute name="draw:id">
+				<ref name="nonNegativeInteger"/>
+			</attribute>
+			<attribute name="svg:x">
+				<choice>
+					<ref name="distance"/>
+					<ref name="percent"/>
+				</choice>
+			</attribute>
+			<attribute name="svg:y">
+				<choice>
+					<ref name="distance"/>
+					<ref name="percent"/>
+				</choice>
+			</attribute>
+			<optional>
+				<attribute name="draw:align">
+					<choice>
+						<value>top-left</value>
+						<value>top</value>
+						<value>top-right</value>
+						<value>left</value>
+						<value>center</value>
+						<value>right</value>
+						<value>bottom-left</value>
+						<value>bottom-right</value>
+					</choice>
+				</attribute>
+			</optional>
+			<attribute name="draw:escape-direction">
+				<choice>
+					<value>auto</value>
+					<value>left</value>
+					<value>right</value>
+					<value>up</value>
+					<value>down</value>
+					<value>horizontal</value>
+					<value>vertical</value>
+				</choice>
+			</attribute>
+		</interleave>
+	</define>
+	<define name="svg-title">
+		<element name="svg:title">
+			<text/>
+		</element>
+	</define>
+	<define name="svg-desc">
+		<element name="svg:desc">
+			<text/>
+		</element>
+	</define>
+	<define name="draw-frame">
+		<element name="draw:frame">
+			<ref name="common-draw-shape-with-text-and-styles-attlist"/>
+			<ref name="common-draw-position-attlist"/>
+			<ref name="common-draw-rel-size-attlist"/>
+			<ref name="common-draw-caption-id-attlist"/>
+			<ref name="presentation-shape-attlist"/>
+			<ref name="draw-frame-attlist"/>
+			<zeroOrMore>
+				<choice>
+					<ref name="draw-text-box"/>
+					<ref name="draw-image"/>
+					<ref name="draw-object"/>
+					<ref name="draw-object-ole"/>
+					<ref name="draw-applet"/>
+					<ref name="draw-floating-frame"/>
+					<ref name="draw-plugin"/>
+					<ref name="table-table"/>
+				</choice>
+			</zeroOrMore>
+			<optional>
+				<ref name="office-event-listeners"/>
+			</optional>
+			<zeroOrMore>
+				<ref name="draw-glue-point"/>
+			</zeroOrMore>
+			<optional>
+				<ref name="draw-image-map"/>
+			</optional>
+			<optional>
+				<ref name="svg-title"/>
+			</optional>
+			<optional>
+				<ref name="svg-desc"/>
+			</optional>
+			<optional>
+				<choice>
+					<ref name="draw-contour-polygon"/>
+					<ref name="draw-contour-path"/>
+				</choice>
+			</optional>
+		</element>
+	</define>
+	<define name="common-draw-rel-size-attlist">
+		<ref name="common-draw-size-attlist"/>
+		<optional>
+			<attribute name="style:rel-width">
+				<choice>
+					<ref name="percent"/>
+					<value>scale</value>
+					<value>scale-min</value>
+				</choice>
+			</attribute>
+		</optional>
+		<optional>
+			<attribute name="style:rel-height">
+				<choice>
+					<ref name="percent"/>
+					<value>scale</value>
+					<value>scale-min</value>
+				</choice>
+			</attribute>
+		</optional>
+	</define>
+	<define name="draw-frame-attlist">
+		<optional>
+			<attribute name="draw:copy-of">
+				<ref name="string"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="draw-text-box">
+		<element name="draw:text-box">
+			<ref name="draw-text-box-attlist"/>
+			<zeroOrMore>
+				<ref name="text-content"/>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="draw-text-box-attlist">
+		<interleave>
+			<optional>
+				<attribute name="draw:chain-next-name">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:corner-radius">
+					<ref name="nonNegativeLength"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="fo:min-height">
+					<choice>
+						<ref name="length"/>
+						<ref name="percent"/>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="fo:min-width">
+					<choice>
+						<ref name="length"/>
+						<ref name="percent"/>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="fo:max-height">
+					<choice>
+						<ref name="length"/>
+						<ref name="percent"/>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="fo:max-width">
+					<choice>
+						<ref name="length"/>
+						<ref name="percent"/>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<group>
+					<ref name="xml-id"/>
+					<optional>
+						<attribute name="text:id">
+							<ref name="NCName"/>
+						</attribute>
+					</optional>
+				</group>
+			</optional>
+		</interleave>
+	</define>
+	<define name="draw-image">
+		<element name="draw:image">
+			<ref name="draw-image-attlist"/>
+			<choice>
+				<ref name="common-draw-data-attlist"/>
+				<ref name="office-binary-data"/>
+			</choice>
+			<ref name="draw-text"/>
+		</element>
+	</define>
+	<define name="common-draw-data-attlist">
+		<group>
+			<attribute name="xlink:type">
+				<value>simple</value>
+			</attribute>
+			<attribute name="xlink:href">
+				<ref name="anyIRI"/>
+			</attribute>
+			<optional>
+				<attribute name="xlink:show">
+					<value>embed</value>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="xlink:actuate">
+					<value>onLoad</value>
+				</attribute>
+			</optional>
+		</group>
+	</define>
+	<define name="office-binary-data">
+		<element name="office:binary-data">
+			<ref name="base64Binary"/>
+		</element>
+	</define>
+	<define name="draw-image-attlist">
+		<interleave>
+			<optional>
+				<attribute name="draw:filter-name">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<ref name="xml-id"/>
+			</optional>
+		</interleave>
+	</define>
+	<define name="draw-object">
+		<element name="draw:object">
+			<ref name="draw-object-attlist"/>
+			<choice>
+				<ref name="common-draw-data-attlist"/>
+				<ref name="office-document"/>
+				<ref name="math-math"/>
+			</choice>
+		</element>
+	</define>
+	<define name="draw-object-ole">
+		<element name="draw:object-ole">
+			<ref name="draw-object-ole-attlist"/>
+			<choice>
+				<ref name="common-draw-data-attlist"/>
+				<ref name="office-binary-data"/>
+			</choice>
+		</element>
+	</define>
+	<define name="draw-object-attlist">
+		<interleave>
+			<optional>
+				<attribute name="draw:notify-on-update-of-ranges">
+					<choice>
+						<ref name="cellRangeAddressList"/>
+						<ref name="string"/>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<ref name="xml-id"/>
+			</optional>
+		</interleave>
+	</define>
+	<define name="draw-object-ole-attlist">
+		<interleave>
+			<optional>
+				<attribute name="draw:class-id">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<ref name="xml-id"/>
+			</optional>
+		</interleave>
+	</define>
+	<define name="draw-applet">
+		<element name="draw:applet">
+			<ref name="draw-applet-attlist"/>
+			<optional>
+				<ref name="common-draw-data-attlist"/>
+			</optional>
+			<zeroOrMore>
+				<ref name="draw-param"/>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="draw-applet-attlist">
+		<interleave>
+			<optional>
+				<attribute name="draw:code">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:object">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:archive">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:may-script">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<ref name="xml-id"/>
+			</optional>
+		</interleave>
+	</define>
+	<define name="draw-plugin">
+		<element name="draw:plugin">
+			<ref name="draw-plugin-attlist"/>
+			<ref name="common-draw-data-attlist"/>
+			<zeroOrMore>
+				<ref name="draw-param"/>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="draw-plugin-attlist">
+		<interleave>
+			<optional>
+				<attribute name="draw:mime-type">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<ref name="xml-id"/>
+			</optional>
+		</interleave>
+	</define>
+	<define name="draw-param">
+		<element name="draw:param">
+			<ref name="draw-param-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="draw-param-attlist">
+		<interleave>
+			<optional>
+				<attribute name="draw:name">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:value">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="draw-floating-frame">
+		<element name="draw:floating-frame">
+			<ref name="draw-floating-frame-attlist"/>
+			<ref name="common-draw-data-attlist"/>
+		</element>
+	</define>
+	<define name="draw-floating-frame-attlist">
+		<interleave>
+			<optional>
+				<attribute name="draw:frame-name">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<ref name="xml-id"/>
+			</optional>
+		</interleave>
+	</define>
+	<define name="draw-contour-polygon">
+		<element name="draw:contour-polygon">
+			<ref name="common-contour-attlist"/>
+			<ref name="common-draw-size-attlist"/>
+			<ref name="common-draw-viewbox-attlist"/>
+			<ref name="common-draw-points-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="draw-contour-path">
+		<element name="draw:contour-path">
+			<ref name="common-contour-attlist"/>
+			<ref name="common-draw-size-attlist"/>
+			<ref name="common-draw-viewbox-attlist"/>
+			<ref name="common-draw-path-data-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="common-contour-attlist">
+		<attribute name="draw:recreate-on-edit">
+			<ref name="boolean"/>
+		</attribute>
+	</define>
+	<define name="draw-a">
+		<element name="draw:a">
+			<ref name="draw-a-attlist"/>
+			<ref name="shape-instance"/>
+		</element>
+	</define>
+	<define name="draw-a-attlist">
+		<interleave>
+			<attribute name="xlink:type">
+				<value>simple</value>
+			</attribute>
+			<attribute name="xlink:href">
+				<ref name="anyIRI"/>
+			</attribute>
+			<optional>
+				<attribute name="xlink:actuate">
+					<value>onRequest</value>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="office:target-frame-name">
+					<ref name="targetFrameName"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="xlink:show">
+					<choice>
+						<value>new</value>
+						<value>replace</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="office:name">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="office:title">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="office:server-map">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<ref name="xml-id"/>
+			</optional>
+		</interleave>
+	</define>
+	<define name="draw-image-map">
+		<element name="draw:image-map">
+			<zeroOrMore>
+				<choice>
+					<ref name="draw-area-rectangle"/>
+					<ref name="draw-area-circle"/>
+					<ref name="draw-area-polygon"/>
+				</choice>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="draw-area-rectangle">
+		<element name="draw:area-rectangle">
+			<ref name="common-draw-area-attlist"/>
+			<attribute name="svg:x">
+				<ref name="coordinate"/>
+			</attribute>
+			<attribute name="svg:y">
+				<ref name="coordinate"/>
+			</attribute>
+			<attribute name="svg:width">
+				<ref name="length"/>
+			</attribute>
+			<attribute name="svg:height">
+				<ref name="length"/>
+			</attribute>
+			<optional>
+				<ref name="svg-title"/>
+			</optional>
+			<optional>
+				<ref name="svg-desc"/>
+			</optional>
+			<optional>
+				<ref name="office-event-listeners"/>
+			</optional>
+		</element>
+	</define>
+	<define name="draw-area-circle">
+		<element name="draw:area-circle">
+			<ref name="common-draw-area-attlist"/>
+			<attribute name="svg:cx">
+				<ref name="coordinate"/>
+			</attribute>
+			<attribute name="svg:cy">
+				<ref name="coordinate"/>
+			</attribute>
+			<attribute name="svg:r">
+				<ref name="length"/>
+			</attribute>
+			<optional>
+				<ref name="svg-title"/>
+			</optional>
+			<optional>
+				<ref name="svg-desc"/>
+			</optional>
+			<optional>
+				<ref name="office-event-listeners"/>
+			</optional>
+		</element>
+	</define>
+	<define name="draw-area-polygon">
+		<element name="draw:area-polygon">
+			<ref name="common-draw-area-attlist"/>
+			<attribute name="svg:x">
+				<ref name="coordinate"/>
+			</attribute>
+			<attribute name="svg:y">
+				<ref name="coordinate"/>
+			</attribute>
+			<attribute name="svg:width">
+				<ref name="length"/>
+			</attribute>
+			<attribute name="svg:height">
+				<ref name="length"/>
+			</attribute>
+			<ref name="common-draw-viewbox-attlist"/>
+			<ref name="common-draw-points-attlist"/>
+			<optional>
+				<ref name="svg-title"/>
+			</optional>
+			<optional>
+				<ref name="svg-desc"/>
+			</optional>
+			<optional>
+				<ref name="office-event-listeners"/>
+			</optional>
+		</element>
+	</define>
+	<define name="common-draw-area-attlist">
+		<interleave>
+			<optional>
+				<attribute name="xlink:type">
+					<value>simple</value>
+				</attribute>
+				<attribute name="xlink:href">
+					<ref name="anyIRI"/>
+				</attribute>
+				<optional>
+					<attribute name="office:target-frame-name">
+						<ref name="targetFrameName"/>
+					</attribute>
+				</optional>
+				<optional>
+					<attribute name="xlink:show">
+						<choice>
+							<value>new</value>
+							<value>replace</value>
+						</choice>
+					</attribute>
+				</optional>
+			</optional>
+			<optional>
+				<attribute name="office:name">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:nohref">
+					<value>nohref</value>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="dr3d-scene">
+		<element name="dr3d:scene">
+			<ref name="dr3d-scene-attlist"/>
+			<ref name="common-draw-position-attlist"/>
+			<ref name="common-draw-size-attlist"/>
+			<ref name="common-draw-style-name-attlist"/>
+			<ref name="common-draw-z-index-attlist"/>
+			<ref name="common-draw-id-attlist"/>
+			<ref name="common-draw-layer-name-attlist"/>
+			<ref name="common-text-spreadsheet-shape-attlist"/>
+			<ref name="common-dr3d-transform-attlist"/>
+			<ref name="common-draw-caption-id-attlist"/>
+			<optional>
+				<ref name="svg-title"/>
+			</optional>
+			<optional>
+				<ref name="svg-desc"/>
+			</optional>
+			<zeroOrMore>
+				<ref name="dr3d-light"/>
+			</zeroOrMore>
+			<zeroOrMore>
+				<ref name="shapes3d"/>
+			</zeroOrMore>
+			<zeroOrMore>
+				<ref name="draw-glue-point"/>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="shapes3d">
+		<choice>
+			<ref name="dr3d-scene"/>
+			<ref name="dr3d-extrude"/>
+			<ref name="dr3d-sphere"/>
+			<ref name="dr3d-rotate"/>
+			<ref name="dr3d-cube"/>
+		</choice>
+	</define>
+	<define name="dr3d-scene-attlist">
+		<interleave>
+			<optional>
+				<attribute name="dr3d:vrp">
+					<ref name="vector3D"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="dr3d:vpn">
+					<ref name="vector3D"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="dr3d:vup">
+					<ref name="vector3D"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="dr3d:projection">
+					<choice>
+						<value>parallel</value>
+						<value>perspective</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="dr3d:distance">
+					<ref name="length"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="dr3d:focal-length">
+					<ref name="length"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="dr3d:shadow-slant">
+					<ref name="angle"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="dr3d:shade-mode">
+					<choice>
+						<value>flat</value>
+						<value>phong</value>
+						<value>gouraud</value>
+						<value>draft</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="dr3d:ambient-color">
+					<ref name="color"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="dr3d:lighting-mode">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="common-dr3d-transform-attlist">
+		<optional>
+			<attribute name="dr3d:transform">
+				<ref name="string"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="dr3d-light">
+		<element name="dr3d:light">
+			<ref name="dr3d-light-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="dr3d-light-attlist">
+		<interleave>
+			<optional>
+				<attribute name="dr3d:diffuse-color">
+					<ref name="color"/>
+				</attribute>
+			</optional>
+			<attribute name="dr3d:direction">
+				<ref name="vector3D"/>
+			</attribute>
+			<optional>
+				<attribute name="dr3d:enabled">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="dr3d:specular">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="dr3d-cube">
+		<element name="dr3d:cube">
+			<ref name="dr3d-cube-attlist"/>
+			<ref name="common-draw-z-index-attlist"/>
+			<ref name="common-draw-id-attlist"/>
+			<ref name="common-draw-layer-name-attlist"/>
+			<ref name="common-draw-style-name-attlist"/>
+			<ref name="common-dr3d-transform-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="dr3d-cube-attlist">
+		<optional>
+			<attribute name="dr3d:min-edge">
+				<ref name="vector3D"/>
+			</attribute>
+		</optional>
+		<optional>
+			<attribute name="dr3d:max-edge">
+				<ref name="vector3D"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="dr3d-sphere">
+		<element name="dr3d:sphere">
+			<ref name="dr3d-sphere-attlist"/>
+			<ref name="common-draw-z-index-attlist"/>
+			<ref name="common-draw-id-attlist"/>
+			<ref name="common-draw-layer-name-attlist"/>
+			<ref name="common-draw-style-name-attlist"/>
+			<ref name="common-dr3d-transform-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="dr3d-sphere-attlist">
+		<interleave>
+			<optional>
+				<attribute name="dr3d:center">
+					<ref name="vector3D"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="dr3d:size">
+					<ref name="vector3D"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="dr3d-extrude">
+		<element name="dr3d:extrude">
+			<ref name="common-draw-path-data-attlist"/>
+			<ref name="common-draw-viewbox-attlist"/>
+			<ref name="common-draw-id-attlist"/>
+			<ref name="common-draw-z-index-attlist"/>
+			<ref name="common-draw-layer-name-attlist"/>
+			<ref name="common-draw-style-name-attlist"/>
+			<ref name="common-dr3d-transform-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="dr3d-rotate">
+		<element name="dr3d:rotate">
+			<ref name="common-draw-viewbox-attlist"/>
+			<ref name="common-draw-path-data-attlist"/>
+			<ref name="common-draw-z-index-attlist"/>
+			<ref name="common-draw-id-attlist"/>
+			<ref name="common-draw-layer-name-attlist"/>
+			<ref name="common-draw-style-name-attlist"/>
+			<ref name="common-dr3d-transform-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="draw-custom-shape">
+		<element name="draw:custom-shape">
+			<ref name="draw-custom-shape-attlist"/>
+			<ref name="common-draw-position-attlist"/>
+			<ref name="common-draw-size-attlist"/>
+			<ref name="common-draw-shape-with-text-and-styles-attlist"/>
+			<ref name="common-draw-caption-id-attlist"/>
+			<optional>
+				<ref name="svg-title"/>
+			</optional>
+			<optional>
+				<ref name="svg-desc"/>
+			</optional>
+			<optional>
+				<ref name="office-event-listeners"/>
+			</optional>
+			<zeroOrMore>
+				<ref name="draw-glue-point"/>
+			</zeroOrMore>
+			<ref name="draw-text"/>
+			<optional>
+				<ref name="draw-enhanced-geometry"/>
+			</optional>
+		</element>
+	</define>
+	<define name="draw-custom-shape-attlist">
+		<interleave>
+			<optional>
+				<attribute name="draw:engine">
+					<ref name="namespacedToken"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:data">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="draw-enhanced-geometry">
+		<element name="draw:enhanced-geometry">
+			<ref name="draw-enhanced-geometry-attlist"/>
+			<zeroOrMore>
+				<ref name="draw-equation"/>
+			</zeroOrMore>
+			<zeroOrMore>
+				<ref name="draw-handle"/>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="draw-enhanced-geometry-attlist">
+		<interleave>
+			<optional>
+				<attribute name="draw:type">
+					<ref name="custom-shape-type"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="svg:viewBox">
+					<list>
+						<ref name="integer"/>
+						<ref name="integer"/>
+						<ref name="integer"/>
+						<ref name="integer"/>
+					</list>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:mirror-vertical">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:mirror-horizontal">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:text-rotate-angle">
+					<ref name="angle"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:extrusion-allowed">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:text-path-allowed">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:concentric-gradient-fill-allowed">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:extrusion">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:extrusion-brightness">
+					<ref name="zeroToHundredPercent"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:extrusion-depth">
+					<list>
+						<ref name="length"/>
+						<ref name="double"/>
+					</list>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:extrusion-diffusion">
+					<ref name="percent"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:extrusion-number-of-line-segments">
+					<ref name="integer"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:extrusion-light-face">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:extrusion-first-light-harsh">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:extrusion-second-light-harsh">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:extrusion-first-light-level">
+					<ref name="zeroToHundredPercent"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:extrusion-second-light-level">
+					<ref name="zeroToHundredPercent"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:extrusion-first-light-direction">
+					<ref name="vector3D"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:extrusion-second-light-direction">
+					<ref name="vector3D"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:extrusion-metal">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="dr3d:shade-mode">
+					<choice>
+						<value>flat</value>
+						<value>phong</value>
+						<value>gouraud</value>
+						<value>draft</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:extrusion-rotation-angle">
+					<list>
+						<ref name="angle"/>
+						<ref name="angle"/>
+					</list>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:extrusion-rotation-center">
+					<ref name="vector3D"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:extrusion-shininess">
+					<ref name="zeroToHundredPercent"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:extrusion-skew">
+					<list>
+						<ref name="double"/>
+						<ref name="angle"/>
+					</list>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:extrusion-specularity">
+					<ref name="zeroToHundredPercent"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="dr3d:projection">
+					<choice>
+						<value>parallel</value>
+						<value>perspective</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:extrusion-viewpoint">
+					<ref name="point3D"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:extrusion-origin">
+					<list>
+						<ref name="extrusionOrigin"/>
+						<ref name="extrusionOrigin"/>
+					</list>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:extrusion-color">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:enhanced-path">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:path-stretchpoint-x">
+					<ref name="double"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:path-stretchpoint-y">
+					<ref name="double"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:text-areas">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:glue-points">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:glue-point-type">
+					<choice>
+						<value>none</value>
+						<value>segments</value>
+						<value>rectangle</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:glue-point-leaving-directions">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:text-path">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:text-path-mode">
+					<choice>
+						<value>normal</value>
+						<value>path</value>
+						<value>shape</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:text-path-scale">
+					<choice>
+						<value>path</value>
+						<value>shape</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:text-path-same-letter-heights">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:modifiers">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="custom-shape-type">
+		<choice>
+			<value>non-primitive</value>
+			<ref name="string"/>
+		</choice>
+	</define>
+	<define name="point3D">
+		<data type="string">
+			<param name="pattern">\([ ]*-?([0-9]+(\.[0-9]*)?|\.[0-9]+)((cm)|(mm)|(in)|(pt)|(pc))([ ]+-?([0-9]+(\.[0-9]*)?|\.[0-9]+)((cm)|(mm)|(in)|(pt)|(pc))){2}[ ]*\)</param>
+		</data>
+	</define>
+	<define name="extrusionOrigin">
+		<data type="double">
+			<param name="minInclusive">-0.5</param>
+			<param name="maxInclusive">0.5</param>
+		</data>
+	</define>
+	<define name="draw-equation">
+		<element name="draw:equation">
+			<ref name="draw-equation-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="draw-equation-attlist">
+		<interleave>
+			<optional>
+				<attribute name="draw:name">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:formula">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="draw-handle">
+		<element name="draw:handle">
+			<ref name="draw-handle-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="draw-handle-attlist">
+		<interleave>
+			<optional>
+				<attribute name="draw:handle-mirror-vertical">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:handle-mirror-horizontal">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:handle-switched">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<attribute name="draw:handle-position">
+				<ref name="string"/>
+			</attribute>
+			<optional>
+				<attribute name="draw:handle-range-x-minimum">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:handle-range-x-maximum">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:handle-range-y-minimum">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:handle-range-y-maximum">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:handle-polar">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:handle-radius-range-minimum">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:handle-radius-range-maximum">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="presentation-shape-attlist">
+		<interleave>
+			<optional>
+				<attribute name="presentation:class">
+					<ref name="presentation-classes"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="presentation:placeholder">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="presentation:user-transformed">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="presentation-classes">
+		<choice>
+			<value>title</value>
+			<value>outline</value>
+			<value>subtitle</value>
+			<value>text</value>
+			<value>graphic</value>
+			<value>object</value>
+			<value>chart</value>
+			<value>table</value>
+			<value>orgchart</value>
+			<value>page</value>
+			<value>notes</value>
+			<value>handout</value>
+			<value>header</value>
+			<value>footer</value>
+			<value>date-time</value>
+			<value>page-number</value>
+		</choice>
+	</define>
+	<define name="presentation-animations">
+		<element name="presentation:animations">
+			<zeroOrMore>
+				<choice>
+					<ref name="presentation-animation-elements"/>
+					<ref name="presentation-animation-group"/>
+				</choice>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="presentation-animation-elements">
+		<choice>
+			<ref name="presentation-show-shape"/>
+			<ref name="presentation-show-text"/>
+			<ref name="presentation-hide-shape"/>
+			<ref name="presentation-hide-text"/>
+			<ref name="presentation-dim"/>
+			<ref name="presentation-play"/>
+		</choice>
+	</define>
+	<define name="presentation-sound">
+		<element name="presentation:sound">
+			<ref name="presentation-sound-attlist"/>
+			<attribute name="xlink:type">
+				<value>simple</value>
+			</attribute>
+			<attribute name="xlink:href">
+				<ref name="anyIRI"/>
+			</attribute>
+			<optional>
+				<attribute name="xlink:actuate">
+					<value>onRequest</value>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="xlink:show">
+					<choice>
+						<value>new</value>
+						<value>replace</value>
+					</choice>
+				</attribute>
+			</optional>
+			<empty/>
+		</element>
+	</define>
+	<define name="presentation-sound-attlist">
+		<interleave>
+			<optional>
+				<attribute name="presentation:play-full">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<ref name="xml-id"/>
+			</optional>
+		</interleave>
+	</define>
+	<define name="presentation-show-shape">
+		<element name="presentation:show-shape">
+			<ref name="common-presentation-effect-attlist"/>
+			<optional>
+				<ref name="presentation-sound"/>
+			</optional>
+		</element>
+	</define>
+	<define name="common-presentation-effect-attlist">
+		<interleave>
+			<attribute name="draw:shape-id">
+				<ref name="IDREF"/>
+			</attribute>
+			<optional>
+				<attribute name="presentation:effect">
+					<ref name="presentationEffects"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="presentation:direction">
+					<ref name="presentationEffectDirections"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="presentation:speed">
+					<ref name="presentationSpeeds"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="presentation:delay">
+					<ref name="duration"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="presentation:start-scale">
+					<ref name="percent"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="presentation:path-id">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="presentationEffects">
+		<choice>
+			<value>none</value>
+			<value>fade</value>
+			<value>move</value>
+			<value>stripes</value>
+			<value>open</value>
+			<value>close</value>
+			<value>dissolve</value>
+			<value>wavyline</value>
+			<value>random</value>
+			<value>lines</value>
+			<value>laser</value>
+			<value>appear</value>
+			<value>hide</value>
+			<value>move-short</value>
+			<value>checkerboard</value>
+			<value>rotate</value>
+			<value>stretch</value>
+		</choice>
+	</define>
+	<define name="presentationEffectDirections">
+		<choice>
+			<value>none</value>
+			<value>from-left</value>
+			<value>from-top</value>
+			<value>from-right</value>
+			<value>from-bottom</value>
+			<value>from-center</value>
+			<value>from-upper-left</value>
+			<value>from-upper-right</value>
+			<value>from-lower-left</value>
+			<value>from-lower-right</value>
+			<value>to-left</value>
+			<value>to-top</value>
+			<value>to-right</value>
+			<value>to-bottom</value>
+			<value>to-upper-left</value>
+			<value>to-upper-right</value>
+			<value>to-lower-right</value>
+			<value>to-lower-left</value>
+			<value>path</value>
+			<value>spiral-inward-left</value>
+			<value>spiral-inward-right</value>
+			<value>spiral-outward-left</value>
+			<value>spiral-outward-right</value>
+			<value>vertical</value>
+			<value>horizontal</value>
+			<value>to-center</value>
+			<value>clockwise</value>
+			<value>counter-clockwise</value>
+		</choice>
+	</define>
+	<define name="presentationSpeeds">
+		<choice>
+			<value>slow</value>
+			<value>medium</value>
+			<value>fast</value>
+		</choice>
+	</define>
+	<define name="presentation-show-text">
+		<element name="presentation:show-text">
+			<ref name="common-presentation-effect-attlist"/>
+			<optional>
+				<ref name="presentation-sound"/>
+			</optional>
+		</element>
+	</define>
+	<define name="presentation-hide-shape">
+		<element name="presentation:hide-shape">
+			<ref name="common-presentation-effect-attlist"/>
+			<optional>
+				<ref name="presentation-sound"/>
+			</optional>
+		</element>
+	</define>
+	<define name="presentation-hide-text">
+		<element name="presentation:hide-text">
+			<ref name="common-presentation-effect-attlist"/>
+			<optional>
+				<ref name="presentation-sound"/>
+			</optional>
+		</element>
+	</define>
+	<define name="presentation-dim">
+		<element name="presentation:dim">
+			<ref name="presentation-dim-attlist"/>
+			<optional>
+				<ref name="presentation-sound"/>
+			</optional>
+		</element>
+	</define>
+	<define name="presentation-dim-attlist">
+		<interleave>
+			<attribute name="draw:shape-id">
+				<ref name="IDREF"/>
+			</attribute>
+			<attribute name="draw:color">
+				<ref name="color"/>
+			</attribute>
+		</interleave>
+	</define>
+	<define name="presentation-play">
+		<element name="presentation:play">
+			<ref name="presentation-play-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="presentation-play-attlist">
+		<attribute name="draw:shape-id">
+			<ref name="IDREF"/>
+		</attribute>
+		<optional>
+			<attribute name="presentation:speed">
+				<ref name="presentationSpeeds"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="presentation-animation-group">
+		<element name="presentation:animation-group">
+			<zeroOrMore>
+				<ref name="presentation-animation-elements"/>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="common-anim-attlist">
+		<interleave>
+			<optional>
+				<attribute name="presentation:node-type">
+					<choice>
+						<value>default</value>
+						<value>on-click</value>
+						<value>with-previous</value>
+						<value>after-previous</value>
+						<value>timing-root</value>
+						<value>main-sequence</value>
+						<value>interactive-sequence</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="presentation:preset-id">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="presentation:preset-sub-type">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="presentation:preset-class">
+					<choice>
+						<value>custom</value>
+						<value>entrance</value>
+						<value>exit</value>
+						<value>emphasis</value>
+						<value>motion-path</value>
+						<value>ole-action</value>
+						<value>media-call</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="presentation:master-element">
+					<ref name="IDREF"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="presentation:group-id">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<group>
+					<ref name="xml-id"/>
+					<optional>
+						<attribute name="anim:id">
+							<ref name="NCName"/>
+						</attribute>
+					</optional>
+				</group>
+			</optional>
+		</interleave>
+	</define>
+	<define name="presentation-event-listener">
+		<element name="presentation:event-listener">
+			<ref name="presentation-event-listener-attlist"/>
+			<optional>
+				<ref name="presentation-sound"/>
+			</optional>
+		</element>
+	</define>
+	<define name="presentation-event-listener-attlist">
+		<interleave>
+			<attribute name="script:event-name">
+				<ref name="string"/>
+			</attribute>
+			<attribute name="presentation:action">
+				<choice>
+					<value>none</value>
+					<value>previous-page</value>
+					<value>next-page</value>
+					<value>first-page</value>
+					<value>last-page</value>
+					<value>hide</value>
+					<value>stop</value>
+					<value>execute</value>
+					<value>show</value>
+					<value>verb</value>
+					<value>fade-out</value>
+					<value>sound</value>
+					<value>last-visited-page</value>
+				</choice>
+			</attribute>
+			<optional>
+				<attribute name="presentation:effect">
+					<ref name="presentationEffects"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="presentation:direction">
+					<ref name="presentationEffectDirections"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="presentation:speed">
+					<ref name="presentationSpeeds"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="presentation:start-scale">
+					<ref name="percent"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="xlink:type">
+					<value>simple</value>
+				</attribute>
+				<attribute name="xlink:href">
+					<ref name="anyIRI"/>
+				</attribute>
+				<optional>
+					<attribute name="xlink:show">
+						<value>embed</value>
+					</attribute>
+				</optional>
+				<optional>
+					<attribute name="xlink:actuate">
+						<value>onRequest</value>
+					</attribute>
+				</optional>
+			</optional>
+			<optional>
+				<attribute name="presentation:verb">
+					<ref name="nonNegativeInteger"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="presentation-decls">
+		<zeroOrMore>
+			<ref name="presentation-decl"/>
+		</zeroOrMore>
+	</define>
+	<define name="presentation-decl">
+		<choice>
+			<element name="presentation:header-decl">
+				<ref name="presentation-header-decl-attlist"/>
+				<text/>
+			</element>
+			<element name="presentation:footer-decl">
+				<ref name="presentation-footer-decl-attlist"/>
+				<text/>
+			</element>
+			<element name="presentation:date-time-decl">
+				<ref name="presentation-date-time-decl-attlist"/>
+				<text/>
+			</element>
+		</choice>
+	</define>
+	<define name="presentation-header-decl-attlist">
+		<attribute name="presentation:name">
+			<ref name="string"/>
+		</attribute>
+	</define>
+	<define name="presentation-footer-decl-attlist">
+		<attribute name="presentation:name">
+			<ref name="string"/>
+		</attribute>
+	</define>
+	<define name="presentation-date-time-decl-attlist">
+		<interleave>
+			<attribute name="presentation:name">
+				<ref name="string"/>
+			</attribute>
+			<attribute name="presentation:source">
+				<choice>
+					<value>fixed</value>
+					<value>current-date</value>
+				</choice>
+			</attribute>
+			<optional>
+				<attribute name="style:data-style-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="presentation-settings">
+		<optional>
+			<element name="presentation:settings">
+				<ref name="presentation-settings-attlist"/>
+				<zeroOrMore>
+					<ref name="presentation-show"/>
+				</zeroOrMore>
+			</element>
+		</optional>
+	</define>
+	<define name="presentation-settings-attlist">
+		<interleave>
+			<optional>
+				<attribute name="presentation:start-page">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="presentation:show">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="presentation:full-screen">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="presentation:endless">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="presentation:pause">
+					<ref name="duration"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="presentation:show-logo">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="presentation:force-manual">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="presentation:mouse-visible">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="presentation:mouse-as-pen">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="presentation:start-with-navigator">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="presentation:animations">
+					<choice>
+						<value>enabled</value>
+						<value>disabled</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="presentation:transition-on-click">
+					<choice>
+						<value>enabled</value>
+						<value>disabled</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="presentation:stay-on-top">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="presentation:show-end-of-presentation-slide">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="presentation-show">
+		<element name="presentation:show">
+			<ref name="presentation-show-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="presentation-show-attlist">
+		<interleave>
+			<attribute name="presentation:name">
+				<ref name="string"/>
+			</attribute>
+			<attribute name="presentation:pages">
+				<ref name="string"/>
+			</attribute>
+		</interleave>
+	</define>
+	<define name="chart-chart">
+		<element name="chart:chart">
+			<ref name="chart-chart-attlist"/>
+			<optional>
+				<ref name="chart-title"/>
+			</optional>
+			<optional>
+				<ref name="chart-subtitle"/>
+			</optional>
+			<optional>
+				<ref name="chart-footer"/>
+			</optional>
+			<optional>
+				<ref name="chart-legend"/>
+			</optional>
+			<ref name="chart-plot-area"/>
+			<optional>
+				<ref name="table-table"/>
+			</optional>
+		</element>
+	</define>
+	<define name="chart-chart-attlist">
+		<interleave>
+			<attribute name="chart:class">
+				<ref name="namespacedToken"/>
+			</attribute>
+			<ref name="common-draw-size-attlist"/>
+			<optional>
+				<attribute name="chart:column-mapping">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:row-mapping">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:style-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+			<optional>
+				<group>
+					<attribute name="xlink:type">
+						<value>simple</value>
+					</attribute>
+					<attribute name="xlink:href">
+						<ref name="anyIRI"/>
+					</attribute>
+				</group>
+			</optional>
+			<optional>
+				<ref name="xml-id"/>
+			</optional>
+		</interleave>
+	</define>
+	<define name="chart-title">
+		<element name="chart:title">
+			<ref name="chart-title-attlist"/>
+			<optional>
+				<ref name="text-p"/>
+			</optional>
+		</element>
+	</define>
+	<define name="chart-title-attlist">
+		<interleave>
+			<optional>
+				<attribute name="table:cell-range">
+					<ref name="cellRangeAddressList"/>
+				</attribute>
+			</optional>
+			<ref name="common-draw-position-attlist"/>
+			<optional>
+				<attribute name="chart:style-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="chart-subtitle">
+		<element name="chart:subtitle">
+			<ref name="chart-title-attlist"/>
+			<optional>
+				<ref name="text-p"/>
+			</optional>
+		</element>
+	</define>
+	<define name="chart-footer">
+		<element name="chart:footer">
+			<ref name="chart-title-attlist"/>
+			<optional>
+				<ref name="text-p"/>
+			</optional>
+		</element>
+	</define>
+	<define name="chart-legend">
+		<element name="chart:legend">
+			<ref name="chart-legend-attlist"/>
+			<optional>
+				<ref name="text-p"/>
+			</optional>
+		</element>
+	</define>
+	<define name="chart-legend-attlist">
+		<interleave>
+			<choice>
+				<group>
+					<attribute name="chart:legend-position">
+						<choice>
+							<value>start</value>
+							<value>end</value>
+							<value>top</value>
+							<value>bottom</value>
+						</choice>
+					</attribute>
+					<optional>
+						<attribute name="chart:legend-align">
+							<choice>
+								<value>start</value>
+								<value>center</value>
+								<value>end</value>
+							</choice>
+						</attribute>
+					</optional>
+				</group>
+				<attribute name="chart:legend-position">
+					<choice>
+						<value>top-start</value>
+						<value>bottom-start</value>
+						<value>top-end</value>
+						<value>bottom-end</value>
+					</choice>
+				</attribute>
+				<empty/>
+			</choice>
+			<ref name="common-draw-position-attlist"/>
+			<choice>
+				<attribute name="style:legend-expansion">
+					<choice>
+						<value>wide</value>
+						<value>high</value>
+						<value>balanced</value>
+					</choice>
+				</attribute>
+				<group>
+					<attribute name="style:legend-expansion">
+						<value>custom</value>
+					</attribute>
+					<attribute name="style:legend-expansion-aspect-ratio">
+						<ref name="double"/>
+					</attribute>
+				</group>
+				<empty/>
+			</choice>
+			<optional>
+				<attribute name="chart:style-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="chart-plot-area">
+		<element name="chart:plot-area">
+			<ref name="chart-plot-area-attlist"/>
+			<zeroOrMore>
+				<ref name="dr3d-light"/>
+			</zeroOrMore>
+			<zeroOrMore>
+				<ref name="chart-axis"/>
+			</zeroOrMore>
+			<zeroOrMore>
+				<ref name="chart-series"/>
+			</zeroOrMore>
+			<optional>
+				<ref name="chart-stock-gain-marker"/>
+			</optional>
+			<optional>
+				<ref name="chart-stock-loss-marker"/>
+			</optional>
+			<optional>
+				<ref name="chart-stock-range-line"/>
+			</optional>
+			<optional>
+				<ref name="chart-wall"/>
+			</optional>
+			<optional>
+				<ref name="chart-floor"/>
+			</optional>
+		</element>
+	</define>
+	<define name="chart-plot-area-attlist">
+		<interleave>
+			<ref name="common-draw-position-attlist"/>
+			<ref name="common-draw-size-attlist"/>
+			<optional>
+				<attribute name="chart:style-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:cell-range-address">
+					<ref name="cellRangeAddressList"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:data-source-has-labels">
+					<choice>
+						<value>none</value>
+						<value>row</value>
+						<value>column</value>
+						<value>both</value>
+					</choice>
+				</attribute>
+			</optional>
+			<ref name="dr3d-scene-attlist"/>
+			<ref name="common-dr3d-transform-attlist"/>
+			<optional>
+				<ref name="xml-id"/>
+			</optional>
+		</interleave>
+	</define>
+	<define name="chart-wall">
+		<element name="chart:wall">
+			<ref name="chart-wall-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="chart-wall-attlist">
+		<interleave>
+			<optional>
+				<attribute name="svg:width">
+					<ref name="length"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:style-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="chart-floor">
+		<element name="chart:floor">
+			<ref name="chart-floor-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="chart-floor-attlist">
+		<interleave>
+			<optional>
+				<attribute name="svg:width">
+					<ref name="length"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:style-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="chart-axis">
+		<element name="chart:axis">
+			<ref name="chart-axis-attlist"/>
+			<optional>
+				<ref name="chart-title"/>
+			</optional>
+			<optional>
+				<ref name="chart-categories"/>
+			</optional>
+			<zeroOrMore>
+				<ref name="chart-grid"/>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="chart-axis-attlist">
+		<interleave>
+			<attribute name="chart:dimension">
+				<ref name="chart-dimension"/>
+			</attribute>
+			<optional>
+				<attribute name="chart:name">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:style-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="chart-dimension">
+		<choice>
+			<value>x</value>
+			<value>y</value>
+			<value>z</value>
+		</choice>
+	</define>
+	<define name="chart-categories">
+		<element name="chart:categories">
+			<optional>
+				<attribute name="table:cell-range-address">
+					<ref name="cellRangeAddressList"/>
+				</attribute>
+			</optional>
+		</element>
+	</define>
+	<define name="chart-grid">
+		<element name="chart:grid">
+			<ref name="chart-grid-attlist"/>
+		</element>
+	</define>
+	<define name="chart-grid-attlist">
+		<interleave>
+			<optional>
+				<attribute name="chart:class">
+					<choice>
+						<value>major</value>
+						<value>minor</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:style-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="chart-series">
+		<element name="chart:series">
+			<ref name="chart-series-attlist"/>
+			<zeroOrMore>
+				<ref name="chart-domain"/>
+			</zeroOrMore>
+			<optional>
+				<ref name="chart-mean-value"/>
+			</optional>
+			<zeroOrMore>
+				<ref name="chart-regression-curve"/>
+			</zeroOrMore>
+			<zeroOrMore>
+				<ref name="chart-error-indicator"/>
+			</zeroOrMore>
+			<zeroOrMore>
+				<ref name="chart-data-point"/>
+			</zeroOrMore>
+			<optional>
+				<ref name="chart-data-label"/>
+			</optional>
+		</element>
+	</define>
+	<define name="chart-series-attlist">
+		<interleave>
+			<optional>
+				<attribute name="chart:values-cell-range-address">
+					<ref name="cellRangeAddressList"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:label-cell-address">
+					<ref name="cellRangeAddressList"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:class">
+					<ref name="namespacedToken"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:attached-axis">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:style-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+			<optional>
+				<ref name="xml-id"/>
+			</optional>
+		</interleave>
+	</define>
+	<define name="chart-domain">
+		<element name="chart:domain">
+			<optional>
+				<attribute name="table:cell-range-address">
+					<ref name="cellRangeAddressList"/>
+				</attribute>
+			</optional>
+		</element>
+	</define>
+	<define name="chart-data-point">
+		<element name="chart:data-point">
+			<ref name="chart-data-point-attlist"/>
+			<optional>
+				<ref name="chart-data-label"/>
+			</optional>
+		</element>
+	</define>
+	<define name="chart-data-point-attlist">
+		<interleave>
+			<optional>
+				<attribute name="chart:repeated">
+					<ref name="positiveInteger"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:style-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+			<optional>
+				<ref name="xml-id"/>
+			</optional>
+		</interleave>
+	</define>
+	<define name="chart-data-label">
+		<element name="chart:data-label">
+			<ref name="chart-data-label-attlist"/>
+			<optional>
+				<ref name="text-p"/>
+			</optional>
+		</element>
+	</define>
+	<define name="chart-data-label-attlist">
+		<interleave>
+			<ref name="common-draw-position-attlist"/>
+			<optional>
+				<attribute name="chart:style-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="chart-mean-value">
+		<element name="chart:mean-value">
+			<ref name="chart-mean-value-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="chart-mean-value-attlist">
+		<optional>
+			<attribute name="chart:style-name">
+				<ref name="styleNameRef"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="chart-error-indicator">
+		<element name="chart:error-indicator">
+			<ref name="chart-error-indicator-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="chart-error-indicator-attlist">
+		<interleave>
+			<optional>
+				<attribute name="chart:style-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+			<attribute name="chart:dimension">
+				<ref name="chart-dimension"/>
+			</attribute>
+		</interleave>
+	</define>
+	<define name="chart-regression-curve">
+		<element name="chart:regression-curve">
+			<ref name="chart-regression-curve-attlist"/>
+			<optional>
+				<ref name="chart-equation"/>
+			</optional>
+		</element>
+	</define>
+	<define name="chart-regression-curve-attlist">
+		<optional>
+			<attribute name="chart:style-name">
+				<ref name="styleNameRef"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="chart-equation">
+		<element name="chart:equation">
+			<ref name="chart-equation-attlist"/>
+			<optional>
+				<ref name="text-p"/>
+			</optional>
+		</element>
+	</define>
+	<define name="chart-equation-attlist">
+		<interleave>
+			<optional>
+				<attribute name="chart:automatic-content">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:display-r-square">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:display-equation">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<ref name="common-draw-position-attlist"/>
+			<optional>
+				<attribute name="chart:style-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="chart-stock-gain-marker">
+		<element name="chart:stock-gain-marker">
+			<ref name="common-stock-marker-attlist"/>
+		</element>
+	</define>
+	<define name="chart-stock-loss-marker">
+		<element name="chart:stock-loss-marker">
+			<ref name="common-stock-marker-attlist"/>
+		</element>
+	</define>
+	<define name="chart-stock-range-line">
+		<element name="chart:stock-range-line">
+			<ref name="common-stock-marker-attlist"/>
+		</element>
+	</define>
+	<define name="common-stock-marker-attlist">
+		<optional>
+			<attribute name="chart:style-name">
+				<ref name="styleNameRef"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="office-database">
+		<element name="office:database">
+			<ref name="db-data-source"/>
+			<optional>
+				<ref name="db-forms"/>
+			</optional>
+			<optional>
+				<ref name="db-reports"/>
+			</optional>
+			<optional>
+				<ref name="db-queries"/>
+			</optional>
+			<optional>
+				<ref name="db-table-presentations"/>
+			</optional>
+			<optional>
+				<ref name="db-schema-definition"/>
+			</optional>
+		</element>
+	</define>
+	<define name="db-data-source">
+		<element name="db:data-source">
+			<ref name="db-data-source-attlist"/>
+			<ref name="db-connection-data"/>
+			<optional>
+				<ref name="db-driver-settings"/>
+			</optional>
+			<optional>
+				<ref name="db-application-connection-settings"/>
+			</optional>
+		</element>
+	</define>
+	<define name="db-data-source-attlist">
+		<empty/>
+	</define>
+	<define name="db-connection-data">
+		<element name="db:connection-data">
+			<ref name="db-connection-data-attlist"/>
+			<choice>
+				<ref name="db-database-description"/>
+				<ref name="db-connection-resource"/>
+			</choice>
+			<optional>
+				<ref name="db-login"/>
+			</optional>
+		</element>
+	</define>
+	<define name="db-connection-data-attlist">
+		<empty/>
+	</define>
+	<define name="db-database-description">
+		<element name="db:database-description">
+			<ref name="db-database-description-attlist"/>
+			<choice>
+				<ref name="db-file-based-database"/>
+				<ref name="db-server-database"/>
+			</choice>
+		</element>
+	</define>
+	<define name="db-database-description-attlist">
+		<empty/>
+	</define>
+	<define name="db-file-based-database">
+		<element name="db:file-based-database">
+			<ref name="db-file-based-database-attlist"/>
+		</element>
+	</define>
+	<define name="db-file-based-database-attlist">
+		<interleave>
+			<attribute name="xlink:type">
+				<value>simple</value>
+			</attribute>
+			<attribute name="xlink:href">
+				<ref name="anyIRI"/>
+			</attribute>
+			<attribute name="db:media-type">
+				<ref name="string"/>
+			</attribute>
+			<optional>
+				<attribute name="db:extension">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="db-server-database">
+		<element name="db:server-database">
+			<ref name="db-server-database-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="db-server-database-attlist">
+		<interleave>
+			<attribute name="db:type">
+				<ref name="namespacedToken"/>
+			</attribute>
+			<choice>
+				<ref name="db-host-and-port"/>
+				<ref name="db-local-socket-name"/>
+			</choice>
+			<optional>
+				<attribute name="db:database-name">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="db-host-and-port">
+		<attribute name="db:hostname">
+			<ref name="string"/>
+		</attribute>
+		<optional>
+			<attribute name="db:port">
+				<ref name="positiveInteger"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="db-local-socket-name">
+		<optional>
+			<attribute name="db:local-socket">
+				<ref name="string"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="db-connection-resource">
+		<element name="db:connection-resource">
+			<ref name="db-connection-resource-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="db-connection-resource-attlist">
+		<attribute name="xlink:type">
+			<value>simple</value>
+		</attribute>
+		<attribute name="xlink:href">
+			<ref name="anyIRI"/>
+		</attribute>
+		<optional>
+			<attribute name="xlink:show">
+				<value>none</value>
+			</attribute>
+		</optional>
+		<optional>
+			<attribute name="xlink:actuate">
+				<value>onRequest</value>
+			</attribute>
+		</optional>
+	</define>
+	<define name="db-login">
+		<element name="db:login">
+			<ref name="db-login-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="db-login-attlist">
+		<interleave>
+			<optional>
+				<choice>
+					<attribute name="db:user-name">
+						<ref name="string"/>
+					</attribute>
+					<attribute name="db:use-system-user">
+						<ref name="boolean"/>
+					</attribute>
+				</choice>
+			</optional>
+			<optional>
+				<attribute name="db:is-password-required">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="db:login-timeout">
+					<ref name="positiveInteger"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="db-driver-settings">
+		<element name="db:driver-settings">
+			<ref name="db-driver-settings-attlist"/>
+			<optional>
+				<ref name="db-auto-increment"/>
+			</optional>
+			<optional>
+				<ref name="db-delimiter"/>
+			</optional>
+			<optional>
+				<ref name="db-character-set"/>
+			</optional>
+			<optional>
+				<ref name="db-table-settings"/>
+			</optional>
+		</element>
+	</define>
+	<define name="db-driver-settings-attlist">
+		<interleave>
+			<ref name="db-show-deleted"/>
+			<optional>
+				<attribute name="db:system-driver-settings">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="db:base-dn">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<ref name="db-is-first-row-header-line"/>
+			<optional>
+				<attribute name="db:parameter-name-substitution">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="db-show-deleted">
+		<optional>
+			<attribute name="db:show-deleted">
+				<ref name="boolean"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="db-is-first-row-header-line">
+		<optional>
+			<attribute name="db:is-first-row-header-line">
+				<ref name="boolean"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="db-auto-increment">
+		<element name="db:auto-increment">
+			<ref name="db-auto-increment-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="db-auto-increment-attlist">
+		<interleave>
+			<optional>
+				<attribute name="db:additional-column-statement">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="db:row-retrieving-statement">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="db-delimiter">
+		<element name="db:delimiter">
+			<ref name="db-delimiter-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="db-delimiter-attlist">
+		<interleave>
+			<optional>
+				<attribute name="db:field">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="db:string">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="db:decimal">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="db:thousand">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="db-character-set">
+		<element name="db:character-set">
+			<ref name="db-character-set-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="db-character-set-attlist">
+		<optional>
+			<attribute name="db:encoding">
+				<ref name="textEncoding"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="db-table-settings">
+		<element name="db:table-settings">
+			<zeroOrMore>
+				<ref name="db-table-setting"/>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="db-table-setting">
+		<element name="db:table-setting">
+			<ref name="db-table-setting-attlist"/>
+			<optional>
+				<ref name="db-delimiter"/>
+			</optional>
+			<optional>
+				<ref name="db-character-set"/>
+			</optional>
+			<empty/>
+		</element>
+	</define>
+	<define name="db-table-setting-attlist">
+		<ref name="db-is-first-row-header-line"/>
+		<ref name="db-show-deleted"/>
+	</define>
+	<define name="db-application-connection-settings">
+		<element name="db:application-connection-settings">
+			<ref name="db-application-connection-settings-attlist"/>
+			<optional>
+				<ref name="db-table-filter"/>
+			</optional>
+			<optional>
+				<ref name="db-table-type-filter"/>
+			</optional>
+			<optional>
+				<ref name="db-data-source-settings"/>
+			</optional>
+		</element>
+	</define>
+	<define name="db-application-connection-settings-attlist">
+		<interleave>
+			<optional>
+				<attribute name="db:is-table-name-length-limited">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="db:enable-sql92-check">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="db:append-table-alias-name">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="db:ignore-driver-privileges">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="db:boolean-comparison-mode">
+					<choice>
+						<value>equal-integer</value>
+						<value>is-boolean</value>
+						<value>equal-boolean</value>
+						<value>equal-use-only-zero</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="db:use-catalog">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="db:max-row-count">
+					<ref name="integer"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="db:suppress-version-columns">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="db-table-filter">
+		<element name="db:table-filter">
+			<ref name="db-table-filter-attlist"/>
+			<optional>
+				<ref name="db-table-include-filter"/>
+			</optional>
+			<optional>
+				<ref name="db-table-exclude-filter"/>
+			</optional>
+		</element>
+	</define>
+	<define name="db-table-filter-attlist">
+		<empty/>
+	</define>
+	<define name="db-table-include-filter">
+		<element name="db:table-include-filter">
+			<ref name="db-table-include-filter-attlist"/>
+			<oneOrMore>
+				<ref name="db-table-filter-pattern"/>
+			</oneOrMore>
+		</element>
+	</define>
+	<define name="db-table-include-filter-attlist">
+		<empty/>
+	</define>
+	<define name="db-table-exclude-filter">
+		<element name="db:table-exclude-filter">
+			<ref name="db-table-exclude-filter-attlist"/>
+			<oneOrMore>
+				<ref name="db-table-filter-pattern"/>
+			</oneOrMore>
+		</element>
+	</define>
+	<define name="db-table-exclude-filter-attlist">
+		<empty/>
+	</define>
+	<define name="db-table-filter-pattern">
+		<element name="db:table-filter-pattern">
+			<ref name="db-table-filter-pattern-attlist"/>
+			<ref name="string"/>
+		</element>
+	</define>
+	<define name="db-table-filter-pattern-attlist">
+		<empty/>
+	</define>
+	<define name="db-table-type-filter">
+		<element name="db:table-type-filter">
+			<ref name="db-table-type-filter-attlist"/>
+			<zeroOrMore>
+				<ref name="db-table-type"/>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="db-table-type-filter-attlist">
+		<empty/>
+	</define>
+	<define name="db-table-type">
+		<element name="db:table-type">
+			<ref name="db-table-type-attlist"/>
+			<ref name="string"/>
+		</element>
+	</define>
+	<define name="db-table-type-attlist">
+		<empty/>
+	</define>
+	<define name="db-data-source-settings">
+		<element name="db:data-source-settings">
+			<ref name="db-data-source-settings-attlist"/>
+			<oneOrMore>
+				<ref name="db-data-source-setting"/>
+			</oneOrMore>
+		</element>
+	</define>
+	<define name="db-data-source-settings-attlist">
+		<empty/>
+	</define>
+	<define name="db-data-source-setting">
+		<element name="db:data-source-setting">
+			<ref name="db-data-source-setting-attlist"/>
+			<oneOrMore>
+				<ref name="db-data-source-setting-value"/>
+			</oneOrMore>
+		</element>
+	</define>
+	<define name="db-data-source-setting-attlist">
+		<interleave>
+			<optional>
+				<attribute name="db:data-source-setting-is-list">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<attribute name="db:data-source-setting-name">
+				<ref name="string"/>
+			</attribute>
+			<attribute name="db:data-source-setting-type">
+				<ref name="db-data-source-setting-types"/>
+			</attribute>
+		</interleave>
+	</define>
+	<define name="db-data-source-setting-types">
+		<choice>
+			<value>boolean</value>
+			<value>short</value>
+			<value>int</value>
+			<value>long</value>
+			<value>double</value>
+			<value>string</value>
+		</choice>
+	</define>
+	<define name="db-data-source-setting-value">
+		<element name="db:data-source-setting-value">
+			<ref name="db-data-source-setting-value-attlist"/>
+			<ref name="string"/>
+		</element>
+	</define>
+	<define name="db-data-source-setting-value-attlist">
+		<empty/>
+	</define>
+	<define name="db-forms">
+		<element name="db:forms">
+			<ref name="db-forms-attlist"/>
+			<zeroOrMore>
+				<choice>
+					<ref name="db-component"/>
+					<ref name="db-component-collection"/>
+				</choice>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="db-forms-attlist">
+		<empty/>
+	</define>
+	<define name="db-reports">
+		<element name="db:reports">
+			<ref name="db-reports-attlist"/>
+			<zeroOrMore>
+				<choice>
+					<ref name="db-component"/>
+					<ref name="db-component-collection"/>
+				</choice>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="db-reports-attlist">
+		<empty/>
+	</define>
+	<define name="db-component-collection">
+		<element name="db:component-collection">
+			<ref name="db-component-collection-attlist"/>
+			<ref name="common-db-object-name"/>
+			<ref name="common-db-object-title"/>
+			<ref name="common-db-object-description"/>
+			<zeroOrMore>
+				<choice>
+					<ref name="db-component"/>
+					<ref name="db-component-collection"/>
+				</choice>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="db-component-collection-attlist">
+		<empty/>
+	</define>
+	<define name="db-component">
+		<element name="db:component">
+			<ref name="db-component-attlist"/>
+			<ref name="common-db-object-name"/>
+			<ref name="common-db-object-title"/>
+			<ref name="common-db-object-description"/>
+			<optional>
+				<choice>
+					<ref name="office-document"/>
+					<ref name="math-math"/>
+				</choice>
+			</optional>
+		</element>
+	</define>
+	<define name="db-component-attlist">
+		<interleave>
+			<optional>
+				<attribute name="xlink:type">
+					<value>simple</value>
+				</attribute>
+				<attribute name="xlink:href">
+					<ref name="anyIRI"/>
+				</attribute>
+				<optional>
+					<attribute name="xlink:show">
+						<value>none</value>
+					</attribute>
+				</optional>
+				<optional>
+					<attribute name="xlink:actuate">
+						<value>onRequest</value>
+					</attribute>
+				</optional>
+			</optional>
+			<optional>
+				<attribute name="db:as-template">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="db-queries">
+		<element name="db:queries">
+			<ref name="db-queries-attlist"/>
+			<zeroOrMore>
+				<choice>
+					<ref name="db-query"/>
+					<ref name="db-query-collection"/>
+				</choice>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="db-queries-attlist">
+		<empty/>
+	</define>
+	<define name="db-query-collection">
+		<element name="db:query-collection">
+			<ref name="db-query-collection-attlist"/>
+			<ref name="common-db-object-name"/>
+			<ref name="common-db-object-title"/>
+			<ref name="common-db-object-description"/>
+			<zeroOrMore>
+				<choice>
+					<ref name="db-query"/>
+					<ref name="db-query-collection"/>
+				</choice>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="db-query-collection-attlist">
+		<empty/>
+	</define>
+	<define name="db-query">
+		<element name="db:query">
+			<ref name="db-query-attlist"/>
+			<ref name="common-db-object-name"/>
+			<ref name="common-db-object-title"/>
+			<ref name="common-db-object-description"/>
+			<ref name="common-db-table-style-name"/>
+			<optional>
+				<ref name="db-order-statement"/>
+			</optional>
+			<optional>
+				<ref name="db-filter-statement"/>
+			</optional>
+			<optional>
+				<ref name="db-columns"/>
+			</optional>
+			<optional>
+				<ref name="db-update-table"/>
+			</optional>
+		</element>
+	</define>
+	<define name="db-query-attlist">
+		<interleave>
+			<attribute name="db:command">
+				<ref name="string"/>
+			</attribute>
+			<optional>
+				<attribute name="db:escape-processing">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="db-order-statement">
+		<element name="db:order-statement">
+			<ref name="db-command"/>
+			<ref name="db-apply-command"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="db-filter-statement">
+		<element name="db:filter-statement">
+			<ref name="db-command"/>
+			<ref name="db-apply-command"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="db-update-table">
+		<element name="db:update-table">
+			<ref name="common-db-table-name-attlist"/>
+		</element>
+	</define>
+	<define name="db-table-presentations">
+		<element name="db:table-representations">
+			<ref name="db-table-presentations-attlist"/>
+			<zeroOrMore>
+				<ref name="db-table-presentation"/>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="db-table-presentations-attlist">
+		<empty/>
+	</define>
+	<define name="db-table-presentation">
+		<element name="db:table-representation">
+			<ref name="db-table-presentation-attlist"/>
+			<ref name="common-db-table-name-attlist"/>
+			<ref name="common-db-object-title"/>
+			<ref name="common-db-object-description"/>
+			<ref name="common-db-table-style-name"/>
+			<optional>
+				<ref name="db-order-statement"/>
+			</optional>
+			<optional>
+				<ref name="db-filter-statement"/>
+			</optional>
+			<optional>
+				<ref name="db-columns"/>
+			</optional>
+		</element>
+	</define>
+	<define name="db-table-presentation-attlist">
+		<empty/>
+	</define>
+	<define name="db-columns">
+		<element name="db:columns">
+			<ref name="db-columns-attlist"/>
+			<oneOrMore>
+				<ref name="db-column"/>
+			</oneOrMore>
+		</element>
+	</define>
+	<define name="db-columns-attlist">
+		<empty/>
+	</define>
+	<define name="db-column">
+		<element name="db:column">
+			<ref name="db-column-attlist"/>
+			<ref name="common-db-object-name"/>
+			<ref name="common-db-object-title"/>
+			<ref name="common-db-object-description"/>
+			<ref name="common-db-default-value"/>
+		</element>
+	</define>
+	<define name="db-column-attlist">
+		<interleave>
+			<optional>
+				<attribute name="db:visible">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+	
+			<optional>
+				<attribute name="db:style-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="db:default-cell-style-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="db-command">
+		<attribute name="db:command">
+			<ref name="string"/>
+		</attribute>
+	</define>
+	<define name="db-apply-command">
+		<optional>
+			<attribute name="db:apply-command">
+				<ref name="boolean"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-db-table-name-attlist">
+		<interleave>
+			<attribute name="db:name">
+				<ref name="string"/>
+			</attribute>
+			<optional>
+				<attribute name="db:catalog-name">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="db:schema-name">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="common-db-object-name">
+		<attribute name="db:name">
+			<ref name="string"/>
+		</attribute>
+	</define>
+	<define name="common-db-object-title">
+		<optional>
+			<attribute name="db:title">
+				<ref name="string"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-db-object-description">
+		<optional>
+			<attribute name="db:description">
+				<ref name="string"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-db-table-style-name">
+		<interleave>
+			<optional>
+				<attribute name="db:style-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="db:default-row-style-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="common-db-default-value">
+		<optional>
+			<ref name="common-value-and-type-attlist"/>
+		</optional>
+	</define>
+	<define name="db-schema-definition">
+		<element name="db:schema-definition">
+			<ref name="db-schema-definition-attlist"/>
+			<ref name="db-table-definitions"/>
+		</element>
+	</define>
+	<define name="db-schema-definition-attlist">
+		<empty/>
+	</define>
+	<define name="db-table-definitions">
+		<element name="db:table-definitions">
+			<ref name="db-table-definitions-attlist"/>
+			<zeroOrMore>
+				<ref name="db-table-definition"/>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="db-table-definitions-attlist">
+		<empty/>
+	</define>
+	<define name="db-table-definition">
+		<element name="db:table-definition">
+			<ref name="common-db-table-name-attlist"/>
+			<ref name="db-table-definition-attlist"/>
+			<ref name="db-column-definitions"/>
+			<optional>
+				<ref name="db-keys"/>
+			</optional>
+			<optional>
+				<ref name="db-indices"/>
+			</optional>
+		</element>
+	</define>
+	<define name="db-table-definition-attlist">
+		<optional>
+			<attribute name="db:type">
+				<ref name="string"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="db-column-definitions">
+		<element name="db:column-definitions">
+			<ref name="db-column-definitions-attlist"/>
+			<oneOrMore>
+				<ref name="db-column-definition"/>
+			</oneOrMore>
+		</element>
+	</define>
+	<define name="db-column-definitions-attlist">
+		<empty/>
+	</define>
+	<define name="db-column-definition">
+		<element name="db:column-definition">
+			<ref name="db-column-definition-attlist"/>
+			<ref name="common-db-default-value"/>
+		</element>
+	</define>
+	<define name="db-column-definition-attlist">
+		<interleave>
+			<attribute name="db:name">
+				<ref name="string"/>
+			</attribute>
+	
+			<optional>
+				<attribute name="db:data-type">
+					<ref name="db-data-types"/>
+				</attribute>
+			</optional>
+	
+			<optional>
+				<attribute name="db:type-name">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+	
+			<optional>
+				<attribute name="db:precision">
+					<ref name="positiveInteger"/>
+				</attribute>
+			</optional>
+	
+			<optional>
+				<attribute name="db:scale">
+					<ref name="positiveInteger"/>
+				</attribute>
+			</optional>
+	
+			<optional>
+				<attribute name="db:is-nullable">
+					<choice>
+						<value>no-nulls</value>
+						<value>nullable</value>
+					</choice>
+				</attribute>
+			</optional>
+	
+			<optional>
+				<attribute name="db:is-empty-allowed">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+	
+			<optional>
+				<attribute name="db:is-autoincrement">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="db-data-types">
+		<choice>
+			<value>bit</value>
+			<value>boolean</value>
+			<value>tinyint</value>
+			<value>smallint</value>
+			<value>integer</value>
+			<value>bigint</value>
+			<value>float</value>
+			<value>real</value>
+			<value>double</value>
+			<value>numeric</value>
+			<value>decimal</value>
+			<value>char</value>
+			<value>varchar</value>
+			<value>longvarchar</value>
+			<value>date</value>
+			<value>time</value>
+			<value>timestmp</value>
+			<value>binary</value>
+			<value>varbinary</value>
+			<value>longvarbinary</value>
+			<value>sqlnull</value>
+			<value>other</value>
+			<value>object</value>
+			<value>distinct</value>
+			<value>struct</value>
+			<value>array</value>
+			<value>blob</value>
+			<value>clob</value>
+			<value>ref</value>
+		</choice>
+	</define>
+	<define name="db-keys">
+		<element name="db:keys">
+			<ref name="db-keys-attlist"/>
+			<oneOrMore>
+				<ref name="db-key"/>
+			</oneOrMore>
+		</element>
+	</define>
+	<define name="db-keys-attlist">
+		<empty/>
+	</define>
+	<define name="db-key">
+		<element name="db:key">
+			<ref name="db-key-attlist"/>
+			<oneOrMore>
+				<ref name="db-key-columns"/>
+			</oneOrMore>
+		</element>
+	</define>
+	<define name="db-key-attlist">
+		<interleave>
+			<optional>
+				<attribute name="db:name">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+	
+			<attribute name="db:type">
+				<choice>
+					<value>primary</value>
+					<value>unique</value>
+					<value>foreign</value>
+				</choice>
+			</attribute>
+	
+			<optional>
+				<attribute name="db:referenced-table-name">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+	
+			<optional>
+				<attribute name="db:update-rule">
+					<choice>
+						<value>cascade</value>
+						<value>restrict</value>
+						<value>set-null</value>
+						<value>no-action</value>
+						<value>set-default</value>
+					</choice>
+				</attribute>
+			</optional>
+	
+			<optional>
+				<attribute name="db:delete-rule">
+					<choice>
+						<value>cascade</value>
+						<value>restrict</value>
+						<value>set-null</value>
+						<value>no-action</value>
+						<value>set-default</value>
+					</choice>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="db-key-columns">
+		<element name="db:key-columns">
+			<ref name="db-key-columns-attlist"/>
+			<oneOrMore>
+				<ref name="db-key-column"/>
+			</oneOrMore>
+		</element>
+	</define>
+	<define name="db-key-columns-attlist">
+		<empty/>
+	</define>
+	<define name="db-key-column">
+		<element name="db:key-column">
+			<ref name="db-key-column-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="db-key-column-attlist">
+		<interleave>
+			<optional>
+				<attribute name="db:name">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+	
+			<optional>
+				<attribute name="db:related-column-name">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="db-indices">
+		<element name="db:indices">
+			<ref name="db-indices-attlist"/>
+			<oneOrMore>
+				<ref name="db-index"/>
+			</oneOrMore>
+		</element>
+	</define>
+	<define name="db-indices-attlist">
+		<empty/>
+	</define>
+	<define name="db-index">
+		<element name="db:index">
+			<ref name="db-index-attlist"/>
+			<oneOrMore>
+				<ref name="db-index-columns"/>
+			</oneOrMore>
+		</element>
+	</define>
+	<define name="db-index-attlist">
+		<interleave>
+			<attribute name="db:name">
+				<ref name="string"/>
+			</attribute>
+	
+			<optional>
+				<attribute name="db:catalog-name">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+	
+			<optional>
+				<attribute name="db:is-unique">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+	
+			<optional>
+				<attribute name="db:is-clustered">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="db-index-columns">
+		<element name="db:index-columns">
+			<oneOrMore>
+				<ref name="db-index-column"/>
+			</oneOrMore>
+		</element>
+	</define>
+	<define name="db-index-column">
+		<element name="db:index-column">
+			<ref name="db-index-column-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="db-index-column-attlist">
+		<interleave>
+			<attribute name="db:name">
+				<ref name="string"/>
+			</attribute>
+	
+			<optional>
+				<attribute name="db:is-ascending">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="office-forms">
+		<optional>
+			<element name="office:forms">
+				<ref name="office-forms-attlist"/>
+				<zeroOrMore>
+					<choice>
+						<ref name="form-form"/>
+						<ref name="xforms-model"/>
+					</choice>
+				</zeroOrMore>
+			</element>
+		</optional>
+	</define>
+	<define name="office-forms-attlist">
+		<interleave>
+			<optional>
+				<attribute name="form:automatic-focus">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="form:apply-design-mode">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="form-form">
+		<element name="form:form">
+			<ref name="common-form-control-attlist"/>
+			<ref name="form-form-attlist"/>
+			<optional>
+				<ref name="form-properties"/>
+			</optional>
+			<optional>
+				<ref name="office-event-listeners"/>
+			</optional>
+			<zeroOrMore>
+				<choice>
+					<ref name="controls"/>
+					<ref name="form-form"/>
+				</choice>
+			</zeroOrMore>
+			<optional>
+				<ref name="form-connection-resource"/>
+			</optional>
+		</element>
+	</define>
+	<define name="form-form-attlist">
+		<interleave>
+			<optional>
+				<attribute name="xlink:type">
+					<value>simple</value>
+				</attribute>
+				<attribute name="xlink:href">
+					<ref name="anyIRI"/>
+				</attribute>
+				<optional>
+					<attribute name="xlink:actuate">
+						<value>onRequest</value>
+					</attribute>
+				</optional>
+			</optional>
+			<optional>
+				<attribute name="office:target-frame">
+					<ref name="targetFrameName"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="form:method">
+					<choice>
+						<value>get</value>
+						<value>post</value>
+						<ref name="string"/>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="form:enctype">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="form:allow-deletes">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="form:allow-inserts">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="form:allow-updates">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="form:apply-filter">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="form:command-type">
+					<choice>
+						<value>table</value>
+						<value>query</value>
+						<value>command</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="form:command">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="form:datasource">
+					<choice>
+						<ref name="anyIRI"/>
+						<ref name="string"/>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="form:master-fields">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="form:detail-fields">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="form:escape-processing">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="form:filter">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="form:ignore-result">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="form:navigation-mode">
+					<ref name="navigation"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="form:order">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="form:tab-cycle">
+					<ref name="tab-cycles"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="navigation">
+		<choice>
+			<value>none</value>
+			<value>current</value>
+			<value>parent</value>
+		</choice>
+	</define>
+	<define name="tab-cycles">
+		<choice>
+			<value>records</value>
+			<value>current</value>
+			<value>page</value>
+		</choice>
+	</define>
+	<define name="form-connection-resource">
+		<element name="form:connection-resource">
+			<attribute name="xlink:href">
+				<ref name="anyIRI"/>
+			</attribute>
+			<empty/>
+		</element>
+	</define>
+	<define name="xforms-model">
+		<element name="xforms:model">
+			<ref name="anyAttListOrElements"/>
+		</element>
+	</define>
+	<define name="column-controls">
+		<choice>
+			<element name="form:text">
+				<ref name="form-text-attlist"/>
+				<ref name="common-form-control-content"/>
+			</element>
+			<element name="form:textarea">
+				<ref name="form-textarea-attlist"/>
+				<ref name="common-form-control-content"/>
+				<zeroOrMore>
+					<ref name="text-p"/>
+				</zeroOrMore>
+			</element>
+			<element name="form:formatted-text">
+				<ref name="form-formatted-text-attlist"/>
+				<ref name="common-form-control-content"/>
+			</element>
+			<element name="form:number">
+				<ref name="form-number-attlist"/>
+				<ref name="common-numeric-control-attlist"/>
+				<ref name="common-form-control-content"/>
+				<ref name="common-linked-cell"/>
+				<ref name="common-spin-button"/>
+				<ref name="common-repeat"/>
+				<ref name="common-delay-for-repeat"/>
+			</element>
+			<element name="form:date">
+				<ref name="form-date-attlist"/>
+				<ref name="common-numeric-control-attlist"/>
+				<ref name="common-form-control-content"/>
+				<ref name="common-linked-cell"/>
+				<ref name="common-spin-button"/>
+				<ref name="common-repeat"/>
+				<ref name="common-delay-for-repeat"/>
+			</element>
+			<element name="form:time">
+				<ref name="form-time-attlist"/>
+				<ref name="common-numeric-control-attlist"/>
+				<ref name="common-form-control-content"/>
+				<ref name="common-linked-cell"/>
+				<ref name="common-spin-button"/>
+				<ref name="common-repeat"/>
+				<ref name="common-delay-for-repeat"/>
+			</element>
+			<element name="form:combobox">
+				<ref name="form-combobox-attlist"/>
+				<ref name="common-form-control-content"/>
+				<zeroOrMore>
+					<ref name="form-item"/>
+				</zeroOrMore>
+			</element>
+			<element name="form:listbox">
+				<ref name="form-listbox-attlist"/>
+				<ref name="common-form-control-content"/>
+				<zeroOrMore>
+					<ref name="form-option"/>
+				</zeroOrMore>
+			</element>
+			<element name="form:checkbox">
+				<ref name="form-checkbox-attlist"/>
+				<ref name="common-form-control-content"/>
+			</element>
+		</choice>
+	</define>
+	<define name="controls">
+		<choice>
+			<ref name="column-controls"/>
+			<element name="form:password">
+				<ref name="form-password-attlist"/>
+				<ref name="common-form-control-content"/>
+			</element>
+			<element name="form:file">
+				<ref name="form-file-attlist"/>
+				<ref name="common-form-control-content"/>
+			</element>
+			<element name="form:fixed-text">
+				<ref name="form-fixed-text-attlist"/>
+				<ref name="common-form-control-content"/>
+			</element>
+			<element name="form:button">
+				<ref name="form-button-attlist"/>
+				<ref name="common-form-control-content"/>
+			</element>
+			<element name="form:image">
+				<ref name="form-image-attlist"/>
+				<ref name="common-form-control-content"/>
+			</element>
+			<element name="form:radio">
+				<ref name="form-radio-attlist"/>
+				<ref name="common-form-control-content"/>
+			</element>
+			<element name="form:frame">
+				<ref name="form-frame-attlist"/>
+				<ref name="common-form-control-content"/>
+			</element>
+			<element name="form:image-frame">
+				<ref name="form-image-frame-attlist"/>
+				<ref name="common-form-control-content"/>
+			</element>
+			<element name="form:hidden">
+				<ref name="form-hidden-attlist"/>
+				<ref name="common-form-control-content"/>
+			</element>
+			<element name="form:grid">
+				<ref name="form-grid-attlist"/>
+				<ref name="common-form-control-content"/>
+				<zeroOrMore>
+					<ref name="form-column"/>
+				</zeroOrMore>
+			</element>
+			<element name="form:value-range">
+				<ref name="form-value-range-attlist"/>
+				<ref name="common-form-control-content"/>
+			</element>
+			<element name="form:generic-control">
+				<ref name="form-generic-control-attlist"/>
+				<ref name="common-form-control-content"/>
+			</element>
+		</choice>
+	</define>
+	<define name="form-text-attlist">
+		<ref name="form-control-attlist"/>
+		<ref name="common-current-value-attlist"/>
+		<ref name="common-disabled-attlist"/>
+		<ref name="common-maxlength-attlist"/>
+		<ref name="common-printable-attlist"/>
+		<ref name="common-readonly-attlist"/>
+		<ref name="common-tab-attlist"/>
+		<ref name="common-title-attlist"/>
+		<ref name="common-value-attlist"/>
+		<ref name="common-convert-empty-attlist"/>
+		<ref name="common-data-field-attlist"/>
+		<ref name="common-linked-cell"/>
+	</define>
+	<define name="form-control-attlist">
+		<ref name="common-form-control-attlist"/>
+		<ref name="common-control-id-attlist"/>
+		<ref name="xforms-bind-attlist"/>
+	</define>
+	<define name="common-form-control-content">
+		<optional>
+			<ref name="form-properties"/>
+		</optional>
+		<optional>
+			<ref name="office-event-listeners"/>
+		</optional>
+	</define>
+	<define name="form-textarea-attlist">
+		<ref name="form-control-attlist"/>
+		<ref name="common-current-value-attlist"/>
+		<ref name="common-disabled-attlist"/>
+		<ref name="common-maxlength-attlist"/>
+		<ref name="common-printable-attlist"/>
+		<ref name="common-readonly-attlist"/>
+		<ref name="common-tab-attlist"/>
+		<ref name="common-title-attlist"/>
+		<ref name="common-value-attlist"/>
+		<ref name="common-convert-empty-attlist"/>
+		<ref name="common-data-field-attlist"/>
+		<ref name="common-linked-cell"/>
+	</define>
+	<define name="form-password-attlist">
+		<interleave>
+			<ref name="form-control-attlist"/>
+			<ref name="common-disabled-attlist"/>
+			<ref name="common-maxlength-attlist"/>
+			<ref name="common-printable-attlist"/>
+			<ref name="common-tab-attlist"/>
+			<ref name="common-title-attlist"/>
+			<ref name="common-value-attlist"/>
+			<ref name="common-convert-empty-attlist"/>
+			<ref name="common-linked-cell"/>
+			<optional>
+				<attribute name="form:echo-char">
+					<ref name="character"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="form-file-attlist">
+		<ref name="form-control-attlist"/>
+		<ref name="common-current-value-attlist"/>
+		<ref name="common-disabled-attlist"/>
+		<ref name="common-maxlength-attlist"/>
+		<ref name="common-printable-attlist"/>
+		<ref name="common-readonly-attlist"/>
+		<ref name="common-tab-attlist"/>
+		<ref name="common-title-attlist"/>
+		<ref name="common-value-attlist"/>
+		<ref name="common-linked-cell"/>
+	</define>
+	<define name="form-formatted-text-attlist">
+		<interleave>
+			<ref name="form-control-attlist"/>
+			<ref name="common-current-value-attlist"/>
+			<ref name="common-disabled-attlist"/>
+			<ref name="common-maxlength-attlist"/>
+			<ref name="common-printable-attlist"/>
+			<ref name="common-readonly-attlist"/>
+			<ref name="common-tab-attlist"/>
+			<ref name="common-title-attlist"/>
+			<ref name="common-value-attlist"/>
+			<ref name="common-convert-empty-attlist"/>
+			<ref name="common-data-field-attlist"/>
+			<ref name="common-linked-cell"/>
+			<ref name="common-spin-button"/>
+			<ref name="common-repeat"/>
+			<ref name="common-delay-for-repeat"/>
+			<optional>
+				<attribute name="form:max-value">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="form:min-value">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="form:validation">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="common-numeric-control-attlist">
+		<ref name="form-control-attlist"/>
+		<ref name="common-disabled-attlist"/>
+		<ref name="common-maxlength-attlist"/>
+		<ref name="common-printable-attlist"/>
+		<ref name="common-readonly-attlist"/>
+		<ref name="common-tab-attlist"/>
+		<ref name="common-title-attlist"/>
+		<ref name="common-convert-empty-attlist"/>
+		<ref name="common-data-field-attlist"/>
+	</define>
+	<define name="form-number-attlist">
+		<interleave>
+			<optional>
+				<attribute name="form:value">
+					<ref name="double"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="form:current-value">
+					<ref name="double"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="form:min-value">
+					<ref name="double"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="form:max-value">
+					<ref name="double"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="form-date-attlist">
+		<interleave>
+			<optional>
+				<attribute name="form:value">
+					<ref name="date"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="form:current-value">
+					<ref name="date"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="form:min-value">
+					<ref name="date"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="form:max-value">
+					<ref name="date"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="form-time-attlist">
+		<interleave>
+			<optional>
+				<attribute name="form:value">
+					<ref name="time"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="form:current-value">
+					<ref name="time"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="form:min-value">
+					<ref name="time"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="form:max-value">
+					<ref name="time"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="form-fixed-text-attlist">
+		<interleave>
+			<ref name="form-control-attlist"/>
+			<ref name="for"/>
+			<ref name="common-disabled-attlist"/>
+			<ref name="label"/>
+			<ref name="common-printable-attlist"/>
+			<ref name="common-title-attlist"/>
+			<optional>
+				<attribute name="form:multi-line">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="form-combobox-attlist">
+		<interleave>
+			<ref name="form-control-attlist"/>
+			<ref name="common-current-value-attlist"/>
+			<ref name="common-disabled-attlist"/>
+			<ref name="dropdown"/>
+			<ref name="common-maxlength-attlist"/>
+			<ref name="common-printable-attlist"/>
+			<ref name="common-readonly-attlist"/>
+			<ref name="size"/>
+			<ref name="common-tab-attlist"/>
+			<ref name="common-title-attlist"/>
+			<ref name="common-value-attlist"/>
+			<ref name="common-convert-empty-attlist"/>
+			<ref name="common-data-field-attlist"/>
+			<ref name="list-source"/>
+			<ref name="list-source-type"/>
+			<ref name="common-linked-cell"/>
+			<ref name="common-source-cell-range"/>
+			<optional>
+				<attribute name="form:auto-complete">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="form-item">
+		<element name="form:item">
+			<ref name="form-item-attlist"/>
+			<text/>
+		</element>
+	</define>
+	<define name="form-item-attlist">
+		<ref name="label"/>
+	</define>
+	<define name="form-listbox-attlist">
+		<interleave>
+			<ref name="form-control-attlist"/>
+			<ref name="common-disabled-attlist"/>
+			<ref name="dropdown"/>
+			<ref name="common-printable-attlist"/>
+			<ref name="size"/>
+			<ref name="common-tab-attlist"/>
+			<ref name="common-title-attlist"/>
+			<ref name="bound-column"/>
+			<ref name="common-data-field-attlist"/>
+			<ref name="list-source"/>
+			<ref name="list-source-type"/>
+			<ref name="common-linked-cell"/>
+			<ref name="list-linkage-type"/>
+			<ref name="common-source-cell-range"/>
+			<optional>
+				<attribute name="form:multiple">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="form:xforms-list-source">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="list-linkage-type">
+		<optional>
+			<attribute name="form:list-linkage-type">
+				<choice>
+					<value>selection</value>
+					<value>selection-indices</value>
+				</choice>
+			</attribute>
+		</optional>
+	</define>
+	<define name="form-option">
+		<element name="form:option">
+			<ref name="form-option-attlist"/>
+			<text/>
+		</element>
+	</define>
+	<define name="form-option-attlist">
+		<ref name="current-selected"/>
+		<ref name="selected"/>
+		<ref name="label"/>
+		<ref name="common-value-attlist"/>
+	</define>
+	<define name="form-button-attlist">
+		<interleave>
+			<ref name="form-control-attlist"/>
+			<ref name="button-type"/>
+			<ref name="common-disabled-attlist"/>
+			<ref name="label"/>
+			<ref name="image-data"/>
+			<ref name="common-printable-attlist"/>
+			<ref name="common-tab-attlist"/>
+			<ref name="target-frame"/>
+			<ref name="target-location"/>
+			<ref name="common-title-attlist"/>
+			<ref name="common-value-attlist"/>
+			<ref name="common-form-relative-image-position-attlist"/>
+			<ref name="common-repeat"/>
+			<ref name="common-delay-for-repeat"/>
+			<optional>
+				<attribute name="form:default-button">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="form:toggle">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="form:focus-on-click">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="form:xforms-submission">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="form-image-attlist">
+		<ref name="form-control-attlist"/>
+		<ref name="button-type"/>
+		<ref name="common-disabled-attlist"/>
+		<ref name="image-data"/>
+		<ref name="common-printable-attlist"/>
+		<ref name="common-tab-attlist"/>
+		<ref name="target-frame"/>
+		<ref name="target-location"/>
+		<ref name="common-title-attlist"/>
+		<ref name="common-value-attlist"/>
+	</define>
+	<define name="form-checkbox-attlist">
+		<interleave>
+			<ref name="form-control-attlist"/>
+			<ref name="common-disabled-attlist"/>
+			<ref name="label"/>
+			<ref name="common-printable-attlist"/>
+			<ref name="common-tab-attlist"/>
+			<ref name="common-title-attlist"/>
+			<ref name="common-value-attlist"/>
+			<ref name="common-data-field-attlist"/>
+			<ref name="common-form-visual-effect-attlist"/>
+			<ref name="common-form-relative-image-position-attlist"/>
+			<ref name="common-linked-cell"/>
+			<optional>
+				<attribute name="form:current-state">
+					<ref name="states"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="form:is-tristate">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="form:state">
+					<ref name="states"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="states">
+		<choice>
+			<value>unchecked</value>
+			<value>checked</value>
+			<value>unknown</value>
+		</choice>
+	</define>
+	<define name="form-radio-attlist">
+		<ref name="form-control-attlist"/>
+		<ref name="current-selected"/>
+		<ref name="common-disabled-attlist"/>
+		<ref name="label"/>
+		<ref name="common-printable-attlist"/>
+		<ref name="selected"/>
+		<ref name="common-tab-attlist"/>
+		<ref name="common-title-attlist"/>
+		<ref name="common-value-attlist"/>
+		<ref name="common-data-field-attlist"/>
+		<ref name="common-form-visual-effect-attlist"/>
+		<ref name="common-form-relative-image-position-attlist"/>
+		<ref name="common-linked-cell"/>
+	</define>
+	<define name="form-frame-attlist">
+		<ref name="form-control-attlist"/>
+		<ref name="common-disabled-attlist"/>
+		<ref name="for"/>
+		<ref name="label"/>
+		<ref name="common-printable-attlist"/>
+		<ref name="common-title-attlist"/>
+	</define>
+	<define name="form-image-frame-attlist">
+		<ref name="form-control-attlist"/>
+		<ref name="common-disabled-attlist"/>
+		<ref name="image-data"/>
+		<ref name="common-printable-attlist"/>
+		<ref name="common-readonly-attlist"/>
+		<ref name="common-title-attlist"/>
+		<ref name="common-data-field-attlist"/>
+	</define>
+	<define name="form-hidden-attlist">
+		<ref name="form-control-attlist"/>
+		<ref name="common-value-attlist"/>
+	</define>
+	<define name="form-grid-attlist">
+		<ref name="form-control-attlist"/>
+		<ref name="common-disabled-attlist"/>
+		<ref name="common-printable-attlist"/>
+		<ref name="common-tab-attlist"/>
+		<ref name="common-title-attlist"/>
+	</define>
+	<define name="form-column">
+		<element name="form:column">
+			<ref name="form-column-attlist"/>
+			<oneOrMore>
+				<ref name="column-controls"/>
+			</oneOrMore>
+		</element>
+	</define>
+	<define name="form-column-attlist">
+		<ref name="common-form-control-attlist"/>
+		<ref name="label"/>
+		<ref name="text-style-name"/>
+	</define>
+	<define name="text-style-name">
+		<optional>
+			<attribute name="form:text-style-name">
+				<ref name="styleNameRef"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="form-value-range-attlist">
+		<interleave>
+			<ref name="form-control-attlist"/>
+			<ref name="common-disabled-attlist"/>
+			<ref name="common-printable-attlist"/>
+			<ref name="common-tab-attlist"/>
+			<ref name="common-title-attlist"/>
+			<ref name="common-value-attlist"/>
+			<ref name="common-linked-cell"/>
+			<ref name="common-repeat"/>
+			<ref name="common-delay-for-repeat"/>
+			<optional>
+				<attribute name="form:max-value">
+					<ref name="integer"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="form:min-value">
+					<ref name="integer"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="form:step-size">
+					<ref name="positiveInteger"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="form:page-step-size">
+					<ref name="positiveInteger"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="form:orientation">
+					<choice>
+						<value>horizontal</value>
+						<value>vertical</value>
+					</choice>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="form-generic-control-attlist">
+		<ref name="form-control-attlist"/>
+	</define>
+	<define name="common-form-control-attlist">
+		<interleave>
+			<optional>
+				<attribute name="form:name">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="form:control-implementation">
+					<ref name="namespacedToken"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="xforms-bind-attlist">
+		<optional>
+			<attribute name="xforms:bind">
+				<ref name="string"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="types">
+		<choice>
+			<value>submit</value>
+			<value>reset</value>
+			<value>push</value>
+			<value>url</value>
+		</choice>
+	</define>
+	<define name="button-type">
+		<optional>
+			<attribute name="form:button-type">
+				<ref name="types"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-control-id-attlist">
+		<group>
+			<ref name="xml-id"/>
+			<optional>
+				<attribute name="form:id">
+					<ref name="NCName"/>
+				</attribute>
+			</optional>
+		</group>
+	</define>
+	<define name="current-selected">
+		<optional>
+			<attribute name="form:current-selected">
+				<ref name="boolean"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-value-attlist">
+		<optional>
+			<attribute name="form:value">
+				<ref name="string"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-current-value-attlist">
+		<optional>
+			<attribute name="form:current-value">
+				<ref name="string"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-disabled-attlist">
+		<optional>
+			<attribute name="form:disabled">
+				<ref name="boolean"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="dropdown">
+		<optional>
+			<attribute name="form:dropdown">
+				<ref name="boolean"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="for">
+		<optional>
+			<attribute name="form:for">
+				<ref name="string"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="image-data">
+		<optional>
+			<attribute name="form:image-data">
+				<ref name="anyIRI"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="label">
+		<optional>
+			<attribute name="form:label">
+				<ref name="string"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-maxlength-attlist">
+		<optional>
+			<attribute name="form:max-length">
+				<ref name="nonNegativeInteger"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-printable-attlist">
+		<optional>
+			<attribute name="form:printable">
+				<ref name="boolean"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-readonly-attlist">
+		<optional>
+			<attribute name="form:readonly">
+				<ref name="boolean"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="selected">
+		<optional>
+			<attribute name="form:selected">
+				<ref name="boolean"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="size">
+		<optional>
+			<attribute name="form:size">
+				<ref name="nonNegativeInteger"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-tab-attlist">
+		<interleave>
+			<optional>
+				<attribute name="form:tab-index">
+					<ref name="nonNegativeInteger"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="form:tab-stop">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="target-frame">
+		<optional>
+			<attribute name="office:target-frame">
+				<ref name="targetFrameName"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="target-location">
+		<optional>
+			<attribute name="xlink:href">
+				<ref name="anyIRI"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-title-attlist">
+		<optional>
+			<attribute name="form:title">
+				<ref name="string"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-form-visual-effect-attlist">
+		<optional>
+			<attribute name="form:visual-effect">
+				<choice>
+					<value>flat</value>
+					<value>3d</value>
+				</choice>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-form-relative-image-position-attlist">
+		<choice>
+			<optional>
+				<attribute name="form:image-position">
+					<value>center</value>
+				</attribute>
+			</optional>
+			<group>
+				<attribute name="form:image-position">
+					<choice>
+						<value>start</value>
+						<value>end</value>
+						<value>top</value>
+						<value>bottom</value>
+					</choice>
+				</attribute>
+				<optional>
+					<attribute name="form:image-align">
+						<choice>
+							<value>start</value>
+							<value>center</value>
+							<value>end</value>
+						</choice>
+					</attribute>
+				</optional>
+			</group>
+		</choice>
+	</define>
+	<define name="bound-column">
+		<optional>
+			<attribute name="form:bound-column">
+				<ref name="string"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-convert-empty-attlist">
+		<optional>
+			<attribute name="form:convert-empty-to-null">
+				<ref name="boolean"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-data-field-attlist">
+		<optional>
+			<attribute name="form:data-field">
+				<ref name="string"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="list-source">
+		<optional>
+			<attribute name="form:list-source">
+				<ref name="string"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="list-source-type">
+		<optional>
+			<attribute name="form:list-source-type">
+				<choice>
+					<value>table</value>
+					<value>query</value>
+					<value>sql</value>
+					<value>sql-pass-through</value>
+					<value>value-list</value>
+					<value>table-fields</value>
+				</choice>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-linked-cell">
+		<optional>
+			<attribute name="form:linked-cell">
+				<choice>
+					<ref name="cellAddress"/>
+					<ref name="string"/>
+				</choice>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-source-cell-range">
+		<optional>
+			<attribute name="form:source-cell-range">
+				<choice>
+					<ref name="cellRangeAddress"/>
+					<ref name="string"/>
+				</choice>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-spin-button">
+		<optional>
+			<attribute name="form:spin-button">
+				<ref name="boolean"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-repeat">
+		<optional>
+			<attribute name="form:repeat">
+				<ref name="boolean"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-delay-for-repeat">
+		<optional>
+			<attribute name="form:delay-for-repeat">
+				<ref name="duration"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="form-properties">
+		<element name="form:properties">
+			<oneOrMore>
+				<ref name="form-property"/>
+			</oneOrMore>
+		</element>
+	</define>
+	<define name="form-property">
+		<choice>
+			<element name="form:property">
+				<ref name="form-property-name"/>
+				<ref name="form-property-value-and-type-attlist"/>
+			</element>
+			<element name="form:list-property">
+				<ref name="form-property-name"/>
+				<ref name="form-property-type-and-value-list"/>
+			</element>
+		</choice>
+	</define>
+	<define name="form-property-name">
+		<attribute name="form:property-name">
+			<ref name="string"/>
+		</attribute>
+	</define>
+	<define name="form-property-value-and-type-attlist">
+		<choice>
+			<ref name="common-value-and-type-attlist"/>
+			<attribute name="office:value-type">
+				<value>void</value>
+			</attribute>
+		</choice>
+	</define>
+	<define name="form-property-type-and-value-list">
+		<choice>
+			<group>
+				<attribute name="office:value-type">
+					<value>float</value>
+				</attribute>
+				<zeroOrMore>
+					<element name="form:list-value">
+						<attribute name="office:value">
+							<ref name="double"/>
+						</attribute>
+					</element>
+				</zeroOrMore>
+			</group>
+			<group>
+				<attribute name="office:value-type">
+					<value>percentage</value>
+				</attribute>
+				<zeroOrMore>
+					<element name="form:list-value">
+						<attribute name="office:value">
+							<ref name="double"/>
+						</attribute>
+					</element>
+				</zeroOrMore>
+			</group>
+			<group>
+				<attribute name="office:value-type">
+					<value>currency</value>
+				</attribute>
+				<zeroOrMore>
+					<element name="form:list-value">
+						<attribute name="office:value">
+							<ref name="double"/>
+						</attribute>
+						<optional>
+							<attribute name="office:currency">
+								<ref name="string"/>
+							</attribute>
+						</optional>
+					</element>
+				</zeroOrMore>
+			</group>
+			<group>
+				<attribute name="office:value-type">
+					<value>date</value>
+				</attribute>
+				<zeroOrMore>
+					<element name="form:list-value">
+						<attribute name="office:date-value">
+							<ref name="dateOrDateTime"/>
+						</attribute>
+					</element>
+				</zeroOrMore>
+			</group>
+			<group>
+				<attribute name="office:value-type">
+					<value>time</value>
+				</attribute>
+				<zeroOrMore>
+					<element name="form:list-value">
+						<attribute name="office:time-value">
+							<ref name="duration"/>
+						</attribute>
+					</element>
+				</zeroOrMore>
+			</group>
+			<group>
+				<attribute name="office:value-type">
+					<value>boolean</value>
+				</attribute>
+				<zeroOrMore>
+					<element name="form:list-value">
+						<attribute name="office:boolean-value">
+							<ref name="boolean"/>
+						</attribute>
+					</element>
+				</zeroOrMore>
+			</group>
+			<group>
+				<attribute name="office:value-type">
+					<value>string</value>
+				</attribute>
+				<zeroOrMore>
+					<element name="form:list-value">
+						<attribute name="office:string-value">
+							<ref name="string"/>
+						</attribute>
+					</element>
+				</zeroOrMore>
+			</group>
+			<attribute name="office:value-type">
+				<value>void</value>
+			</attribute>
+		</choice>
+	</define>
+	<define name="office-annotation">
+		<element name="office:annotation">
+			<ref name="office-annotation-attlist"/>
+			<ref name="draw-caption-attlist"/>
+			<ref name="common-draw-position-attlist"/>
+			<ref name="common-draw-size-attlist"/>
+			<ref name="common-draw-shape-with-text-and-styles-attlist"/>
+			<optional>
+				<ref name="dc-creator"/>
+			</optional>
+			<optional>
+				<ref name="dc-date"/>
+			</optional>
+			<optional>
+				<ref name="meta-date-string"/>
+			</optional>
+			<zeroOrMore>
+				<choice>
+					<ref name="text-p"/>
+					<ref name="text-list"/>
+				</choice>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="office-annotation-end">
+		<element name="office:annotation-end">
+			<ref name="office-annotation-end-attlist"/>
+		</element>
+	</define>
+	<define name="office-annotation-attlist">
+		<interleave>
+			<optional>
+				<attribute name="office:display">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<ref name="common-office-annotation-name-attlist"/>
+			</optional>
+		</interleave>
+	</define>
+	<define name="office-annotation-end-attlist">
+		<ref name="common-office-annotation-name-attlist"/>
+	</define>
+	<define name="common-office-annotation-name-attlist">
+		<attribute name="office:name">
+			<ref name="string"/>
+		</attribute>
+	</define>
+	<define name="meta-date-string">
+		<element name="meta:date-string">
+			<ref name="string"/>
+		</element>
+	</define>
+	<define name="common-num-format-prefix-suffix-attlist">
+		<optional>
+			<attribute name="style:num-prefix">
+				<ref name="string"/>
+			</attribute>
+		</optional>
+		<optional>
+			<attribute name="style:num-suffix">
+				<ref name="string"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-num-format-attlist">
+		<choice>
+			<attribute name="style:num-format">
+				<choice>
+					<value>1</value>
+					<value>i</value>
+					<value>I</value>
+					<ref name="string"/>
+					<empty/>
+				</choice>
+			</attribute>
+			<group>
+				<attribute name="style:num-format">
+					<choice>
+						<value>a</value>
+						<value>A</value>
+					</choice>
+				</attribute>
+				<ref name="style-num-letter-sync-attlist"/>
+			</group>
+			<empty/>
+		</choice>
+	</define>
+	<define name="style-num-letter-sync-attlist">
+		<optional>
+			<attribute name="style:num-letter-sync">
+				<ref name="boolean"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="office-change-info">
+		<element name="office:change-info">
+			<ref name="dc-creator"/>
+			<ref name="dc-date"/>
+			<zeroOrMore>
+				<ref name="text-p"/>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="office-event-listeners">
+		<element name="office:event-listeners">
+			<zeroOrMore>
+				<choice>
+					<ref name="script-event-listener"/>
+					<ref name="presentation-event-listener"/>
+				</choice>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="script-event-listener">
+		<element name="script:event-listener">
+			<ref name="script-event-listener-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="script-event-listener-attlist">
+		<interleave>
+			<attribute name="script:event-name">
+				<ref name="string"/>
+			</attribute>
+			<attribute name="script:language">
+				<ref name="string"/>
+			</attribute>
+			<choice>
+				<attribute name="script:macro-name">
+					<ref name="string"/>
+				</attribute>
+				<group>
+					<attribute name="xlink:type">
+						<value>simple</value>
+					</attribute>
+					<attribute name="xlink:href">
+						<ref name="anyIRI"/>
+					</attribute>
+					<optional>
+						<attribute name="xlink:actuate">
+							<value>onRequest</value>
+						</attribute>
+					</optional>
+				</group>
+			</choice>
+		</interleave>
+	</define>
+	<define name="math-math">
+		<element name="math:math">
+			<ref name="mathMarkup"/>
+		</element>
+	</define>
+	<define name="mathMarkup">
+		<dc:description>To avoid inclusion of the complete MathML schema, anything is allowed within a math:math top-level element</dc:description>
+		<zeroOrMore>
+			<choice>
+				<attribute>
+					<anyName/>
+				</attribute>
+				<text/>
+				<element>
+					<anyName/>
+					<ref name="mathMarkup"/>
+				</element>
+			</choice>
+		</zeroOrMore>
+	</define>
+	<define name="text-dde-connection-decl">
+		<element name="text:dde-connection-decl">
+			<ref name="text-dde-connection-decl-attlist"/>
+			<ref name="common-dde-connection-decl-attlist"/>
+		</element>
+	</define>
+	<define name="text-dde-connection-decl-attlist">
+		<attribute name="office:name">
+			<ref name="string"/>
+		</attribute>
+	</define>
+	<define name="common-dde-connection-decl-attlist">
+		<interleave>
+			<attribute name="office:dde-application">
+				<ref name="string"/>
+			</attribute>
+			<attribute name="office:dde-topic">
+				<ref name="string"/>
+			</attribute>
+			<attribute name="office:dde-item">
+				<ref name="string"/>
+			</attribute>
+			<optional>
+				<attribute name="office:automatic-update">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="table-dde-link">
+		<element name="table:dde-link">
+			<ref name="office-dde-source"/>
+			<ref name="table-table"/>
+		</element>
+	</define>
+	<define name="office-dde-source">
+		<element name="office:dde-source">
+			<ref name="office-dde-source-attlist"/>
+			<ref name="common-dde-connection-decl-attlist"/>
+		</element>
+	</define>
+	<define name="office-dde-source-attlist">
+		<interleave>
+			<optional>
+				<attribute name="office:name">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="office:conversion-mode">
+					<choice>
+						<value>into-default-style-data-style</value>
+						<value>into-english-number</value>
+						<value>keep-text</value>
+					</choice>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="animation-element">
+		<choice>
+			<element name="anim:animate">
+				<ref name="common-anim-target-attlist"/>
+				<ref name="common-anim-named-target-attlist"/>
+				<ref name="common-anim-values-attlist"/>
+				<ref name="common-anim-spline-mode-attlist"/>
+				<ref name="common-spline-anim-value-attlist"/>
+				<ref name="common-timing-attlist"/>
+				<ref name="common-anim-add-accum-attlist"/>
+			</element>
+			<element name="anim:set">
+				<ref name="common-anim-target-attlist"/>
+				<ref name="common-anim-named-target-attlist"/>
+				<ref name="common-anim-set-values-attlist"/>
+				<ref name="common-timing-attlist"/>
+				<ref name="common-anim-add-accum-attlist"/>
+			</element>
+			<element name="anim:animateMotion">
+				<ref name="anim-animate-motion-attlist"/>
+				<ref name="common-anim-target-attlist"/>
+				<ref name="common-anim-named-target-attlist"/>
+				<ref name="common-anim-add-accum-attlist"/>
+				<ref name="common-anim-values-attlist"/>
+				<ref name="common-timing-attlist"/>
+				<ref name="common-spline-anim-value-attlist"/>
+			</element>
+			<element name="anim:animateColor">
+				<ref name="common-anim-target-attlist"/>
+				<ref name="common-anim-named-target-attlist"/>
+				<ref name="common-anim-add-accum-attlist"/>
+				<ref name="common-anim-values-attlist"/>
+				<ref name="common-anim-spline-mode-attlist"/>
+				<ref name="common-spline-anim-value-attlist"/>
+				<ref name="anim-animate-color-attlist"/>
+				<ref name="common-timing-attlist"/>
+			</element>
+			<element name="anim:animateTransform">
+				<ref name="common-anim-target-attlist"/>
+				<ref name="common-anim-named-target-attlist"/>
+				<ref name="common-anim-add-accum-attlist"/>
+				<ref name="common-anim-values-attlist"/>
+				<ref name="anim-animate-transform-attlist"/>
+				<ref name="common-timing-attlist"/>
+			</element>
+			<element name="anim:transitionFilter">
+				<ref name="common-anim-target-attlist"/>
+				<ref name="common-anim-add-accum-attlist"/>
+				<ref name="common-anim-values-attlist"/>
+				<ref name="common-anim-spline-mode-attlist"/>
+				<ref name="anim-transition-filter-attlist"/>
+				<ref name="common-timing-attlist"/>
+			</element>
+			<element name="anim:par">
+				<ref name="common-anim-attlist"/>
+				<ref name="common-timing-attlist"/>
+				<ref name="common-endsync-timing-attlist"/>
+				<zeroOrMore>
+					<ref name="animation-element"/>
+				</zeroOrMore>
+			</element>
+			<element name="anim:seq">
+				<ref name="common-anim-attlist"/>
+				<ref name="common-endsync-timing-attlist"/>
+				<ref name="common-timing-attlist"/>
+				<zeroOrMore>
+					<ref name="animation-element"/>
+				</zeroOrMore>
+			</element>
+			<element name="anim:iterate">
+				<ref name="common-anim-attlist"/>
+				<ref name="anim-iterate-attlist"/>
+				<ref name="common-timing-attlist"/>
+				<ref name="common-endsync-timing-attlist"/>
+				<zeroOrMore>
+					<ref name="animation-element"/>
+				</zeroOrMore>
+			</element>
+			<element name="anim:audio">
+				<ref name="common-anim-attlist"/>
+				<ref name="anim-audio-attlist"/>
+				<ref name="common-basic-timing-attlist"/>
+			</element>
+			<element name="anim:command">
+				<ref name="common-anim-attlist"/>
+				<ref name="anim-command-attlist"/>
+				<ref name="common-begin-end-timing-attlist"/>
+				<ref name="common-anim-target-attlist"/>
+				<zeroOrMore>
+					<element name="anim:param">
+						<attribute name="anim:name">
+							<ref name="string"/>
+						</attribute>
+						<attribute name="anim:value">
+							<ref name="string"/>
+						</attribute>
+					</element>
+				</zeroOrMore>
+			</element>
+		</choice>
+	</define>
+	<define name="anim-animate-motion-attlist">
+		<interleave>
+			<optional>
+				<attribute name="svg:path">
+					<ref name="pathData"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="svg:origin">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="smil:calcMode">
+					<choice>
+						<value>discrete</value>
+						<value>linear</value>
+						<value>paced</value>
+						<value>spline</value>
+					</choice>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="anim-animate-color-attlist">
+		<interleave>
+			<optional>
+				<attribute name="anim:color-interpolation">
+					<choice>
+						<value>rgb</value>
+						<value>hsl</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="anim:color-interpolation-direction">
+					<choice>
+						<value>clockwise</value>
+						<value>counter-clockwise</value>
+					</choice>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="anim-animate-transform-attlist">
+		<attribute name="svg:type">
+			<choice>
+				<value>translate</value>
+				<value>scale</value>
+				<value>rotate</value>
+				<value>skewX</value>
+				<value>skewY</value>
+			</choice>
+		</attribute>
+	</define>
+	<define name="anim-transition-filter-attlist">
+		<interleave>
+			<attribute name="smil:type">
+				<ref name="string"/>
+			</attribute>
+			<optional>
+				<attribute name="smil:subtype">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="smil:direction">
+					<choice>
+						<value>forward</value>
+						<value>reverse</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="smil:fadeColor">
+					<ref name="color"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="smil:mode">
+					<choice>
+						<value>in</value>
+						<value>out</value>
+					</choice>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="common-anim-target-attlist">
+		<interleave>
+			<optional>
+				<attribute name="smil:targetElement">
+					<ref name="IDREF"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="anim:sub-item">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="common-anim-named-target-attlist">
+		<attribute name="smil:attributeName">
+			<ref name="string"/>
+		</attribute>
+	</define>
+	<define name="common-anim-values-attlist">
+		<interleave>
+			<optional>
+				<attribute name="smil:values">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="anim:formula">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<ref name="common-anim-set-values-attlist"/>
+			<optional>
+				<attribute name="smil:from">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="smil:by">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="common-anim-spline-mode-attlist">
+		<optional>
+			<attribute name="smil:calcMode">
+				<choice>
+					<value>discrete</value>
+					<value>linear</value>
+					<value>paced</value>
+					<value>spline</value>
+				</choice>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-spline-anim-value-attlist">
+		<interleave>
+			<optional>
+				<attribute name="smil:keyTimes">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="smil:keySplines">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="common-anim-add-accum-attlist">
+		<interleave>
+			<optional>
+				<attribute name="smil:accumulate">
+					<choice>
+						<value>none</value>
+						<value>sum</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="smil:additive">
+					<choice>
+						<value>replace</value>
+						<value>sum</value>
+					</choice>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="common-anim-set-values-attlist">
+		<optional>
+			<attribute name="smil:to">
+				<ref name="string"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-begin-end-timing-attlist">
+		<interleave>
+			<optional>
+				<attribute name="smil:begin">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="smil:end">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="common-dur-timing-attlist">
+		<optional>
+			<attribute name="smil:dur">
+				<ref name="string"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-endsync-timing-attlist">
+		<optional>
+			<attribute name="smil:endsync">
+				<choice>
+					<value>first</value>
+					<value>last</value>
+					<value>all</value>
+					<value>media</value>
+					<ref name="IDREF"/>
+				</choice>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-repeat-timing-attlist">
+		<optional>
+			<attribute name="smil:repeatDur">
+				<ref name="string"/>
+			</attribute>
+		</optional>
+		<optional>
+			<attribute name="smil:repeatCount">
+				<choice>
+					<ref name="nonNegativeDecimal"/>
+					<value>indefinite</value>
+				</choice>
+			</attribute>
+		</optional>
+	</define>
+	<define name="nonNegativeDecimal">
+		<data type="decimal">
+			<param name="minInclusive">0.0</param>
+		</data>
+	</define>
+	<define name="common-fill-timing-attlist">
+		<optional>
+			<attribute name="smil:fill">
+				<choice>
+					<value>remove</value>
+					<value>freeze</value>
+					<value>hold</value>
+					<value>auto</value>
+					<value>default</value>
+					<value>transition</value>
+				</choice>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-fill-default-attlist">
+		<optional>
+			<attribute name="smil:fillDefault">
+				<choice>
+					<value>remove</value>
+					<value>freeze</value>
+					<value>hold</value>
+					<value>transition</value>
+					<value>auto</value>
+					<value>inherit</value>
+				</choice>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-restart-timing-attlist">
+		<optional>
+			<attribute name="smil:restart">
+				<choice>
+					<value>never</value>
+					<value>always</value>
+					<value>whenNotActive</value>
+					<value>default</value>
+				</choice>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-restart-default-attlist">
+		<optional>
+			<attribute name="smil:restartDefault">
+				<choice>
+					<value>never</value>
+					<value>always</value>
+					<value>whenNotActive</value>
+					<value>inherit</value>
+				</choice>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-time-manip-attlist">
+		<interleave>
+			<optional>
+				<attribute name="smil:accelerate">
+					<ref name="zeroToOneDecimal"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="smil:decelerate">
+					<ref name="zeroToOneDecimal"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="smil:autoReverse">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="zeroToOneDecimal">
+		<data type="decimal">
+			<param name="minInclusive">0</param>
+			<param name="maxInclusive">1</param>
+		</data>
+	</define>
+	<define name="common-basic-timing-attlist">
+		<ref name="common-begin-end-timing-attlist"/>
+		<ref name="common-dur-timing-attlist"/>
+		<ref name="common-repeat-timing-attlist"/>
+		<ref name="common-restart-timing-attlist"/>
+		<ref name="common-restart-default-attlist"/>
+		<ref name="common-fill-timing-attlist"/>
+		<ref name="common-fill-default-attlist"/>
+	</define>
+	<define name="common-timing-attlist">
+		<ref name="common-basic-timing-attlist"/>
+		<ref name="common-time-manip-attlist"/>
+	</define>
+	<define name="anim-iterate-attlist">
+		<interleave>
+			<ref name="common-anim-target-attlist"/>
+			<optional>
+				<attribute name="anim:iterate-type">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="anim:iterate-interval">
+					<ref name="duration"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="anim-audio-attlist">
+		<interleave>
+			<optional>
+				<attribute name="xlink:href">
+					<ref name="anyIRI"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="anim:audio-level">
+					<ref name="double"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="anim-command-attlist">
+		<attribute name="anim:command">
+			<ref name="string"/>
+		</attribute>
+	</define>
+	<define name="style-style">
+		<element name="style:style">
+			<ref name="style-style-attlist"/>
+			<ref name="style-style-content"/>
+			<zeroOrMore>
+				<ref name="style-map"/>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="common-in-content-meta-attlist">
+		<attribute name="xhtml:about">
+			<ref name="URIorSafeCURIE"/>
+		</attribute>
+		<attribute name="xhtml:property">
+			<ref name="CURIEs"/>
+		</attribute>
+		<ref name="common-meta-literal-attlist"/>
+	</define>
+	<define name="common-meta-literal-attlist">
+		<optional>
+			<attribute name="xhtml:datatype">
+				<ref name="CURIE"/>
+			</attribute>
+		</optional>
+		<optional>
+			<attribute name="xhtml:content">
+				<ref name="string"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="xml-id">
+		<attribute name="xml:id">
+			<ref name="ID"/>
+		</attribute>
+	</define>
+	<define name="style-style-attlist">
+		<interleave>
+			<attribute name="style:name">
+				<ref name="styleName"/>
+			</attribute>
+			<optional>
+				<attribute name="style:display-name">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:parent-style-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:next-style-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:list-level">
+					<choice>
+						<ref name="positiveInteger"/>
+						<empty/>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:list-style-name">
+					<choice>
+						<ref name="styleName"/>
+						<empty/>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:master-page-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:auto-update">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:data-style-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:percentage-data-style-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:class">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:default-outline-level">
+					<choice>
+						<ref name="positiveInteger"/>
+						<empty/>
+					</choice>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="style-map">
+		<element name="style:map">
+			<ref name="style-map-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="style-map-attlist">
+		<interleave>
+			<attribute name="style:condition">
+				<ref name="string"/>
+			</attribute>
+			<attribute name="style:apply-style-name">
+				<ref name="styleNameRef"/>
+			</attribute>
+			<optional>
+				<attribute name="style:base-cell-address">
+					<ref name="cellAddress"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="style-default-style">
+		<element name="style:default-style">
+			<ref name="style-style-content"/>
+		</element>
+	</define>
+	<define name="style-page-layout">
+		<element name="style:page-layout">
+			<ref name="style-page-layout-attlist"/>
+			<ref name="style-page-layout-content"/>
+		</element>
+	</define>
+	<define name="style-page-layout-content">
+		<optional>
+			<ref name="style-page-layout-properties"/>
+		</optional>
+		<optional>
+			<ref name="style-header-style"/>
+		</optional>
+		<optional>
+			<ref name="style-footer-style"/>
+		</optional>
+	</define>
+	<define name="style-page-layout-attlist">
+		<interleave>
+			<attribute name="style:name">
+				<ref name="styleName"/>
+			</attribute>
+			<optional>
+				<attribute name="style:page-usage">
+					<choice>
+						<value>all</value>
+						<value>left</value>
+						<value>right</value>
+						<value>mirrored</value>
+					</choice>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="style-header-style">
+		<element name="style:header-style">
+			<optional>
+				<ref name="style-header-footer-properties"/>
+			</optional>
+		</element>
+	</define>
+	<define name="style-footer-style">
+		<element name="style:footer-style">
+			<optional>
+				<ref name="style-header-footer-properties"/>
+			</optional>
+		</element>
+	</define>
+	<define name="style-default-page-layout">
+		<element name="style:default-page-layout">
+			<ref name="style-page-layout-content"/>
+		</element>
+	</define>
+	<define name="style-master-page">
+		<element name="style:master-page">
+			<ref name="style-master-page-attlist"/>
+			<optional>
+				<ref name="style-header"/>
+				<optional>
+					<ref name="style-header-left"/>
+				</optional>
+			</optional>
+			<optional>
+				<ref name="style-footer"/>
+				<optional>
+					<ref name="style-footer-left"/>
+				</optional>
+			</optional>
+			<optional>
+				<ref name="draw-layer-set"/>
+			</optional>
+			<optional>
+				<ref name="office-forms"/>
+			</optional>
+			<zeroOrMore>
+				<ref name="shape"/>
+			</zeroOrMore>
+			<optional>
+				<ref name="animation-element"/>
+			</optional>
+			<optional>
+				<ref name="presentation-notes"/>
+			</optional>
+		</element>
+	</define>
+	<define name="style-master-page-attlist">
+		<interleave>
+			<attribute name="style:name">
+				<ref name="styleName"/>
+			</attribute>
+			<optional>
+				<attribute name="style:display-name">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<attribute name="style:page-layout-name">
+				<ref name="styleNameRef"/>
+			</attribute>
+			<optional>
+				<attribute name="draw:style-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:next-style-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="style-header">
+		<element name="style:header">
+			<ref name="common-style-header-footer-attlist"/>
+			<ref name="header-footer-content"/>
+		</element>
+	</define>
+	<define name="style-footer">
+		<element name="style:footer">
+			<ref name="common-style-header-footer-attlist"/>
+			<ref name="header-footer-content"/>
+		</element>
+	</define>
+	<define name="style-header-left">
+		<element name="style:header-left">
+			<ref name="common-style-header-footer-attlist"/>
+			<ref name="header-footer-content"/>
+		</element>
+	</define>
+	<define name="style-footer-left">
+		<element name="style:footer-left">
+			<ref name="common-style-header-footer-attlist"/>
+			<ref name="header-footer-content"/>
+		</element>
+	</define>
+	<define name="header-footer-content">
+		<choice>
+			<group>
+				<ref name="text-tracked-changes"/>
+				<ref name="text-decls"/>
+				<zeroOrMore>
+					<choice>
+						<ref name="text-h"/>
+						<ref name="text-p"/>
+						<ref name="text-list"/>
+						<ref name="table-table"/>
+						<ref name="text-section"/>
+						<ref name="text-table-of-content"/>
+						<ref name="text-illustration-index"/>
+						<ref name="text-table-index"/>
+						<ref name="text-object-index"/>
+						<ref name="text-user-index"/>
+						<ref name="text-alphabetical-index"/>
+						<ref name="text-bibliography"/>
+						<ref name="text-index-title"/>
+						<ref name="change-marks"/>
+					</choice>
+				</zeroOrMore>
+			</group>
+			<group>
+				<optional>
+					<ref name="style-region-left"/>
+				</optional>
+				<optional>
+					<ref name="style-region-center"/>
+				</optional>
+				<optional>
+					<ref name="style-region-right"/>
+				</optional>
+			</group>
+		</choice>
+	</define>
+	<define name="common-style-header-footer-attlist">
+		<optional>
+			<attribute name="style:display">
+				<ref name="boolean"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="style-region-left">
+		<element name="style:region-left">
+			<ref name="region-content"/>
+		</element>
+	</define>
+	<define name="style-region-center">
+		<element name="style:region-center">
+			<ref name="region-content"/>
+		</element>
+	</define>
+	<define name="style-region-right">
+		<element name="style:region-right">
+			<ref name="region-content"/>
+		</element>
+	</define>
+	<define name="region-content">
+		<zeroOrMore>
+			<ref name="text-p"/>
+		</zeroOrMore>
+	</define>
+	<define name="presentation-notes">
+		<element name="presentation:notes">
+			<ref name="common-presentation-header-footer-attlist"/>
+			<ref name="presentation-notes-attlist"/>
+			<ref name="office-forms"/>
+			<zeroOrMore>
+				<ref name="shape"/>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="presentation-notes-attlist">
+		<interleave>
+			<optional>
+				<attribute name="style:page-layout-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:style-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="table-table-template">
+		<element name="table:table-template">
+			<ref name="table-table-template-attlist"/>
+			<optional>
+				<ref name="table-first-row"/>
+			</optional>
+			<optional>
+				<ref name="table-last-row"/>
+			</optional>
+			<optional>
+				<ref name="table-first-column"/>
+			</optional>
+			<optional>
+				<ref name="table-last-column"/>
+			</optional>
+			<ref name="table-body"/>
+			<optional>
+				<ref name="table-even-rows"/>
+			</optional>
+			<optional>
+				<ref name="table-odd-rows"/>
+			</optional>
+			<optional>
+				<ref name="table-even-columns"/>
+			</optional>
+			<optional>
+				<ref name="table-odd-columns"/>
+			</optional>
+			<optional>
+				<ref name="table-background"/>
+			</optional>
+		</element>
+	</define>
+	<define name="table-table-template-attlist">
+		<interleave>
+			<attribute name="table:name">
+				<ref name="string"/>
+			</attribute>
+			<attribute name="table:first-row-start-column">
+				<ref name="rowOrCol"/>
+			</attribute>
+			<attribute name="table:first-row-end-column">
+				<ref name="rowOrCol"/>
+			</attribute>
+			<attribute name="table:last-row-start-column">
+				<ref name="rowOrCol"/>
+			</attribute>
+			<attribute name="table:last-row-end-column">
+				<ref name="rowOrCol"/>
+			</attribute>
+		</interleave>
+	</define>
+	<define name="rowOrCol">
+		<choice>
+			<value>row</value>
+			<value>column</value>
+		</choice>
+	</define>
+	<define name="table-first-row">
+		<element name="table:first-row">
+			<ref name="common-table-template-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="table-last-row">
+		<element name="table:last-row">
+			<ref name="common-table-template-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="table-first-column">
+		<element name="table:first-column">
+			<ref name="common-table-template-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="table-last-column">
+		<element name="table:last-column">
+			<ref name="common-table-template-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="table-body">
+		<element name="table:body">
+			<ref name="common-table-template-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="table-even-rows">
+		<element name="table:even-rows">
+			<ref name="common-table-template-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="table-odd-rows">
+		<element name="table:odd-rows">
+			<ref name="common-table-template-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="table-even-columns">
+		<element name="table:even-columns">
+			<ref name="common-table-template-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="table-odd-columns">
+		<element name="table:odd-columns">
+			<ref name="common-table-template-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="common-table-template-attlist">
+		<attribute name="table:style-name">
+			<ref name="styleNameRef"/>
+		</attribute>
+		<optional>
+			<attribute name="table:paragraph-style-name">
+				<ref name="styleNameRef"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="table-background">
+		<element name="table:background">
+			<ref name="table-background-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="table-background-attlist">
+		<attribute name="table:style-name">
+			<ref name="styleNameRef"/>
+		</attribute>
+	</define>
+	<define name="style-font-face">
+		<element name="style:font-face">
+			<ref name="style-font-face-attlist"/>
+			<optional>
+				<ref name="svg-font-face-src"/>
+			</optional>
+			<optional>
+				<ref name="svg-definition-src"/>
+			</optional>
+		</element>
+	</define>
+	<define name="style-font-face-attlist">
+		<interleave>
+			<optional>
+				<attribute name="svg:font-family">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="svg:font-style">
+					<ref name="fontStyle"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="svg:font-variant">
+					<ref name="fontVariant"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="svg:font-weight">
+					<ref name="fontWeight"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="svg:font-stretch">
+					<choice>
+						<value>normal</value>
+						<value>ultra-condensed</value>
+						<value>extra-condensed</value>
+						<value>condensed</value>
+						<value>semi-condensed</value>
+						<value>semi-expanded</value>
+						<value>expanded</value>
+						<value>extra-expanded</value>
+						<value>ultra-expanded</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="svg:font-size">
+					<ref name="positiveLength"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="svg:unicode-range">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="svg:units-per-em">
+					<ref name="integer"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="svg:panose-1">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="svg:stemv">
+					<ref name="integer"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="svg:stemh">
+					<ref name="integer"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="svg:slope">
+					<ref name="integer"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="svg:cap-height">
+					<ref name="integer"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="svg:x-height">
+					<ref name="integer"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="svg:accent-height">
+					<ref name="integer"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="svg:ascent">
+					<ref name="integer"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="svg:descent">
+					<ref name="integer"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="svg:widths">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="svg:bbox">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="svg:ideographic">
+					<ref name="integer"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="svg:alphabetic">
+					<ref name="integer"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="svg:mathematical">
+					<ref name="integer"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="svg:hanging">
+					<ref name="integer"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="svg:v-ideographic">
+					<ref name="integer"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="svg:v-alphabetic">
+					<ref name="integer"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="svg:v-mathematical">
+					<ref name="integer"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="svg:v-hanging">
+					<ref name="integer"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="svg:underline-position">
+					<ref name="integer"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="svg:underline-thickness">
+					<ref name="integer"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="svg:strikethrough-position">
+					<ref name="integer"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="svg:strikethrough-thickness">
+					<ref name="integer"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="svg:overline-position">
+					<ref name="integer"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="svg:overline-thickness">
+					<ref name="integer"/>
+				</attribute>
+			</optional>
+			<attribute name="style:name">
+				<ref name="string"/>
+			</attribute>
+			<optional>
+				<attribute name="style:font-adornments">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:font-family-generic">
+					<ref name="fontFamilyGeneric"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:font-pitch">
+					<ref name="fontPitch"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:font-charset">
+					<ref name="textEncoding"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="svg-font-face-src">
+		<element name="svg:font-face-src">
+			<oneOrMore>
+				<choice>
+					<ref name="svg-font-face-uri"/>
+					<ref name="svg-font-face-name"/>
+				</choice>
+			</oneOrMore>
+		</element>
+	</define>
+	<define name="svg-font-face-uri">
+		<element name="svg:font-face-uri">
+			<ref name="common-svg-font-face-xlink-attlist"/>
+			<zeroOrMore>
+				<ref name="svg-font-face-format"/>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="svg-font-face-format">
+		<element name="svg:font-face-format">
+			<optional>
+				<attribute name="svg:string">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<empty/>
+		</element>
+	</define>
+	<define name="svg-font-face-name">
+		<element name="svg:font-face-name">
+			<optional>
+				<attribute name="svg:name">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<empty/>
+		</element>
+	</define>
+	<define name="svg-definition-src">
+		<element name="svg:definition-src">
+			<ref name="common-svg-font-face-xlink-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="common-svg-font-face-xlink-attlist">
+		<attribute name="xlink:type">
+			<value>simple</value>
+		</attribute>
+		<attribute name="xlink:href">
+			<ref name="anyIRI"/>
+		</attribute>
+		<optional>
+			<attribute name="xlink:actuate">
+				<value>onRequest</value>
+			</attribute>
+		</optional>
+	</define>
+	<define name="number-number-style">
+		<element name="number:number-style">
+			<ref name="common-data-style-attlist"/>
+			<optional>
+				<ref name="style-text-properties"/>
+			</optional>
+			<optional>
+				<ref name="number-text"/>
+			</optional>
+			<optional>
+				<ref name="any-number"/>
+				<optional>
+					<ref name="number-text"/>
+				</optional>
+			</optional>
+			<zeroOrMore>
+				<ref name="style-map"/>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="any-number">
+		<choice>
+			<ref name="number-number"/>
+			<ref name="number-scientific-number"/>
+			<ref name="number-fraction"/>
+		</choice>
+	</define>
+	<define name="number-number">
+		<element name="number:number">
+			<ref name="number-number-attlist"/>
+			<ref name="common-decimal-places-attlist"/>
+			<ref name="common-number-attlist"/>
+			<zeroOrMore>
+				<ref name="number-embedded-text"/>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="number-number-attlist">
+		<interleave>
+			<optional>
+				<attribute name="number:decimal-replacement">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="number:display-factor">
+					<ref name="double"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="number-embedded-text">
+		<element name="number:embedded-text">
+			<ref name="number-embedded-text-attlist"/>
+			<text/>
+		</element>
+	</define>
+	<define name="number-embedded-text-attlist">
+		<attribute name="number:position">
+			<ref name="integer"/>
+		</attribute>
+	</define>
+	<define name="number-scientific-number">
+		<element name="number:scientific-number">
+			<ref name="number-scientific-number-attlist"/>
+			<ref name="common-decimal-places-attlist"/>
+			<ref name="common-number-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="number-scientific-number-attlist">
+		<optional>
+			<attribute name="number:min-exponent-digits">
+				<ref name="integer"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="number-fraction">
+		<element name="number:fraction">
+			<ref name="number-fraction-attlist"/>
+			<ref name="common-number-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="number-fraction-attlist">
+		<interleave>
+			<optional>
+				<attribute name="number:min-numerator-digits">
+					<ref name="integer"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="number:min-denominator-digits">
+					<ref name="integer"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="number:denominator-value">
+					<ref name="integer"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="number-currency-style">
+		<element name="number:currency-style">
+			<ref name="common-data-style-attlist"/>
+			<ref name="common-auto-reorder-attlist"/>
+			<optional>
+				<ref name="style-text-properties"/>
+			</optional>
+			<optional>
+				<ref name="number-text"/>
+			</optional>
+			<optional>
+				<choice>
+					<group>
+						<ref name="number-and-text"/>
+						<optional>
+							<ref name="currency-symbol-and-text"/>
+						</optional>
+					</group>
+					<group>
+						<ref name="currency-symbol-and-text"/>
+						<optional>
+							<ref name="number-and-text"/>
+						</optional>
+					</group>
+				</choice>
+			</optional>
+			<zeroOrMore>
+				<ref name="style-map"/>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="currency-symbol-and-text">
+		<ref name="number-currency-symbol"/>
+		<optional>
+			<ref name="number-text"/>
+		</optional>
+	</define>
+	<define name="number-and-text">
+		<ref name="number-number"/>
+		<optional>
+			<ref name="number-text"/>
+		</optional>
+	</define>
+	<define name="number-currency-symbol">
+		<element name="number:currency-symbol">
+			<ref name="number-currency-symbol-attlist"/>
+			<text/>
+		</element>
+	</define>
+	<define name="number-currency-symbol-attlist">
+		<optional>
+			<attribute name="number:language">
+				<ref name="languageCode"/>
+			</attribute>
+		</optional>
+		<optional>
+			<attribute name="number:country">
+				<ref name="countryCode"/>
+			</attribute>
+		</optional>
+		<optional>
+			<attribute name="number:script">
+				<ref name="scriptCode"/>
+			</attribute>
+		</optional>
+		<optional>
+			<attribute name="number:rfc-language-tag">
+				<ref name="language"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="number-percentage-style">
+		<element name="number:percentage-style">
+			<ref name="common-data-style-attlist"/>
+			<optional>
+				<ref name="style-text-properties"/>
+			</optional>
+			<optional>
+				<ref name="number-text"/>
+			</optional>
+			<optional>
+				<ref name="number-and-text"/>
+			</optional>
+			<zeroOrMore>
+				<ref name="style-map"/>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="number-date-style">
+		<element name="number:date-style">
+			<ref name="common-data-style-attlist"/>
+			<ref name="common-auto-reorder-attlist"/>
+			<ref name="common-format-source-attlist"/>
+			<optional>
+				<ref name="style-text-properties"/>
+			</optional>
+			<optional>
+				<ref name="number-text"/>
+			</optional>
+			<oneOrMore>
+				<ref name="any-date"/>
+				<optional>
+					<ref name="number-text"/>
+				</optional>
+			</oneOrMore>
+			<zeroOrMore>
+				<ref name="style-map"/>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="any-date">
+		<choice>
+			<ref name="number-day"/>
+			<ref name="number-month"/>
+			<ref name="number-year"/>
+			<ref name="number-era"/>
+			<ref name="number-day-of-week"/>
+			<ref name="number-week-of-year"/>
+			<ref name="number-quarter"/>
+			<ref name="number-hours"/>
+			<ref name="number-am-pm"/>
+			<ref name="number-minutes"/>
+			<ref name="number-seconds"/>
+		</choice>
+	</define>
+	<define name="number-day">
+		<element name="number:day">
+			<ref name="number-day-attlist"/>
+			<ref name="common-calendar-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="number-day-attlist">
+		<optional>
+			<attribute name="number:style">
+				<choice>
+					<value>short</value>
+					<value>long</value>
+				</choice>
+			</attribute>
+		</optional>
+	</define>
+	<define name="number-month">
+		<element name="number:month">
+			<ref name="number-month-attlist"/>
+			<ref name="common-calendar-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="number-month-attlist">
+		<interleave>
+			<optional>
+				<attribute name="number:textual">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="number:possessive-form">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="number:style">
+					<choice>
+						<value>short</value>
+						<value>long</value>
+					</choice>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="number-year">
+		<element name="number:year">
+			<ref name="number-year-attlist"/>
+			<ref name="common-calendar-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="number-year-attlist">
+		<optional>
+			<attribute name="number:style">
+				<choice>
+					<value>short</value>
+					<value>long</value>
+				</choice>
+			</attribute>
+		</optional>
+	</define>
+	<define name="number-era">
+		<element name="number:era">
+			<ref name="number-era-attlist"/>
+			<ref name="common-calendar-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="number-era-attlist">
+		<optional>
+			<attribute name="number:style">
+				<choice>
+					<value>short</value>
+					<value>long</value>
+				</choice>
+			</attribute>
+		</optional>
+	</define>
+	<define name="number-day-of-week">
+		<element name="number:day-of-week">
+			<ref name="number-day-of-week-attlist"/>
+			<ref name="common-calendar-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="number-day-of-week-attlist">
+		<optional>
+			<attribute name="number:style">
+				<choice>
+					<value>short</value>
+					<value>long</value>
+				</choice>
+			</attribute>
+		</optional>
+	</define>
+	<define name="number-week-of-year">
+		<element name="number:week-of-year">
+			<ref name="common-calendar-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="number-quarter">
+		<element name="number:quarter">
+			<ref name="number-quarter-attlist"/>
+			<ref name="common-calendar-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="number-quarter-attlist">
+		<optional>
+			<attribute name="number:style">
+				<choice>
+					<value>short</value>
+					<value>long</value>
+				</choice>
+			</attribute>
+		</optional>
+	</define>
+	<define name="number-time-style">
+		<element name="number:time-style">
+			<ref name="number-time-style-attlist"/>
+			<ref name="common-data-style-attlist"/>
+			<ref name="common-format-source-attlist"/>
+			<optional>
+				<ref name="style-text-properties"/>
+			</optional>
+			<optional>
+				<ref name="number-text"/>
+			</optional>
+			<oneOrMore>
+				<ref name="any-time"/>
+				<optional>
+					<ref name="number-text"/>
+				</optional>
+			</oneOrMore>
+			<zeroOrMore>
+				<ref name="style-map"/>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="any-time">
+		<choice>
+			<ref name="number-hours"/>
+			<ref name="number-am-pm"/>
+			<ref name="number-minutes"/>
+			<ref name="number-seconds"/>
+		</choice>
+	</define>
+	<define name="number-time-style-attlist">
+		<optional>
+			<attribute name="number:truncate-on-overflow">
+				<ref name="boolean"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="number-hours">
+		<element name="number:hours">
+			<ref name="number-hours-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="number-hours-attlist">
+		<optional>
+			<attribute name="number:style">
+				<choice>
+					<value>short</value>
+					<value>long</value>
+				</choice>
+			</attribute>
+		</optional>
+	</define>
+	<define name="number-minutes">
+		<element name="number:minutes">
+			<ref name="number-minutes-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="number-minutes-attlist">
+		<optional>
+			<attribute name="number:style">
+				<choice>
+					<value>short</value>
+					<value>long</value>
+				</choice>
+			</attribute>
+		</optional>
+	</define>
+	<define name="number-seconds">
+		<element name="number:seconds">
+			<ref name="number-seconds-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="number-seconds-attlist">
+		<interleave>
+			<optional>
+				<attribute name="number:style">
+					<choice>
+						<value>short</value>
+						<value>long</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="number:decimal-places">
+					<ref name="integer"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="number-am-pm">
+		<element name="number:am-pm">
+			<empty/>
+		</element>
+	</define>
+	<define name="number-boolean-style">
+		<element name="number:boolean-style">
+			<ref name="common-data-style-attlist"/>
+			<optional>
+				<ref name="style-text-properties"/>
+			</optional>
+			<optional>
+				<ref name="number-text"/>
+			</optional>
+			<optional>
+				<ref name="number-boolean"/>
+				<optional>
+					<ref name="number-text"/>
+				</optional>
+			</optional>
+			<zeroOrMore>
+				<ref name="style-map"/>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="number-boolean">
+		<element name="number:boolean">
+			<empty/>
+		</element>
+	</define>
+	<define name="number-text-style">
+		<element name="number:text-style">
+			<ref name="common-data-style-attlist"/>
+			<optional>
+				<ref name="style-text-properties"/>
+			</optional>
+			<optional>
+				<ref name="number-text"/>
+			</optional>
+			<zeroOrMore>
+				<ref name="number-text-content"/>
+				<optional>
+					<ref name="number-text"/>
+				</optional>
+			</zeroOrMore>
+			<zeroOrMore>
+				<ref name="style-map"/>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="number-text">
+		<element name="number:text">
+			<text/>
+		</element>
+	</define>
+	<define name="number-text-content">
+		<element name="number:text-content">
+			<empty/>
+		</element>
+	</define>
+	<define name="common-data-style-attlist">
+		<interleave>
+			<attribute name="style:name">
+				<ref name="styleName"/>
+			</attribute>
+			<optional>
+				<attribute name="style:display-name">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="number:language">
+					<ref name="languageCode"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="number:country">
+					<ref name="countryCode"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="number:script">
+					<ref name="scriptCode"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="number:rfc-language-tag">
+					<ref name="language"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="number:title">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:volatile">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="number:transliteration-format">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="number:transliteration-language">
+					<ref name="countryCode"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="number:transliteration-country">
+					<ref name="countryCode"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="number:transliteration-style">
+					<choice>
+						<value>short</value>
+						<value>medium</value>
+						<value>long</value>
+					</choice>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="common-auto-reorder-attlist">
+		<optional>
+			<attribute name="number:automatic-order">
+				<ref name="boolean"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-format-source-attlist">
+		<optional>
+			<attribute name="number:format-source">
+				<choice>
+					<value>fixed</value>
+					<value>language</value>
+				</choice>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-decimal-places-attlist">
+		<optional>
+			<attribute name="number:decimal-places">
+				<ref name="integer"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-number-attlist">
+		<interleave>
+			<optional>
+				<attribute name="number:min-integer-digits">
+					<ref name="integer"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="number:grouping">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="common-calendar-attlist">
+		<optional>
+			<attribute name="number:calendar">
+				<choice>
+					<value>gregorian</value>
+					<value>gengou</value>
+					<value>ROC</value>
+					<value>hanja_yoil</value>
+					<value>hanja</value>
+					<value>hijri</value>
+					<value>jewish</value>
+					<value>buddhist</value>
+					<ref name="string"/>
+				</choice>
+			</attribute>
+		</optional>
+	</define>
+	<define name="style-style-content">
+		<choice>
+			<group>
+				<attribute name="style:family">
+					<value>text</value>
+				</attribute>
+				<optional>
+					<ref name="style-text-properties"/>
+				</optional>
+			</group>
+			<group>
+				<attribute name="style:family">
+					<value>paragraph</value>
+				</attribute>
+				<optional>
+					<ref name="style-paragraph-properties"/>
+				</optional>
+				<optional>
+					<ref name="style-text-properties"/>
+				</optional>
+			</group>
+			<group>
+				<attribute name="style:family">
+					<value>section</value>
+				</attribute>
+				<optional>
+					<ref name="style-section-properties"/>
+				</optional>
+			</group>
+			<group>
+				<attribute name="style:family">
+					<value>ruby</value>
+				</attribute>
+				<optional>
+					<ref name="style-ruby-properties"/>
+				</optional>
+			</group>
+			<group>
+				<attribute name="style:family">
+					<value>table</value>
+				</attribute>
+				<optional>
+					<ref name="style-table-properties"/>
+				</optional>
+			</group>
+			<group>
+				<attribute name="style:family">
+					<value>table-column</value>
+				</attribute>
+				<optional>
+					<ref name="style-table-column-properties"/>
+				</optional>
+			</group>
+			<group>
+				<attribute name="style:family">
+					<value>table-row</value>
+				</attribute>
+				<optional>
+					<ref name="style-table-row-properties"/>
+				</optional>
+			</group>
+			<group>
+				<attribute name="style:family">
+					<value>table-cell</value>
+				</attribute>
+				<optional>
+					<ref name="style-table-cell-properties"/>
+				</optional>
+				<optional>
+					<ref name="style-paragraph-properties"/>
+				</optional>
+				<optional>
+					<ref name="style-text-properties"/>
+				</optional>
+			</group>
+			<group>
+				<attribute name="style:family">
+					<choice>
+						<value>graphic</value>
+						<value>presentation</value>
+					</choice>
+				</attribute>
+				<optional>
+					<ref name="style-graphic-properties"/>
+				</optional>
+				<optional>
+					<ref name="style-paragraph-properties"/>
+				</optional>
+				<optional>
+					<ref name="style-text-properties"/>
+				</optional>
+			</group>
+			<group>
+				<attribute name="style:family">
+					<value>drawing-page</value>
+				</attribute>
+				<optional>
+					<ref name="style-drawing-page-properties"/>
+				</optional>
+			</group>
+			<group>
+				<attribute name="style:family">
+					<value>chart</value>
+				</attribute>
+				<optional>
+					<ref name="style-chart-properties"/>
+				</optional>
+				<optional>
+					<ref name="style-graphic-properties"/>
+				</optional>
+				<optional>
+					<ref name="style-paragraph-properties"/>
+				</optional>
+				<optional>
+					<ref name="style-text-properties"/>
+				</optional>
+			</group>
+		</choice>
+	</define>
+	<define name="text-linenumbering-configuration">
+		<element name="text:linenumbering-configuration">
+			<ref name="text-linenumbering-configuration-attlist"/>
+			<optional>
+				<ref name="text-linenumbering-separator"/>
+			</optional>
+		</element>
+	</define>
+	<define name="text-linenumbering-configuration-attlist">
+		<interleave>
+			<optional>
+				<attribute name="text:number-lines">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<ref name="common-num-format-attlist"/>
+			</optional>
+			<optional>
+				<attribute name="text:style-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:increment">
+					<ref name="nonNegativeInteger"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:number-position">
+					<choice>
+						<value>left</value>
+						<value>right</value>
+						<value>inner</value>
+						<value>outer</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:offset">
+					<ref name="nonNegativeLength"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:count-empty-lines">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:count-in-text-boxes">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:restart-on-page">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="text-linenumbering-separator">
+		<element name="text:linenumbering-separator">
+			<optional>
+				<attribute name="text:increment">
+					<ref name="nonNegativeInteger"/>
+				</attribute>
+			</optional>
+			<text/>
+		</element>
+	</define>
+	<define name="text-notes-configuration">
+		<element name="text:notes-configuration">
+			<ref name="text-notes-configuration-content"/>
+		</element>
+	</define>
+	<define name="text-notes-configuration-content">
+		<interleave>
+			<ref name="text-note-class"/>
+			<optional>
+				<attribute name="text:citation-style-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:citation-body-style-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:default-style-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:master-page-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:start-value">
+					<ref name="nonNegativeInteger"/>
+				</attribute>
+			</optional>
+			<ref name="common-num-format-prefix-suffix-attlist"/>
+			<optional>
+				<ref name="common-num-format-attlist"/>
+			</optional>
+			<optional>
+				<attribute name="text:start-numbering-at">
+					<choice>
+						<value>document</value>
+						<value>chapter</value>
+						<value>page</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:footnotes-position">
+					<choice>
+						<value>text</value>
+						<value>page</value>
+						<value>section</value>
+						<value>document</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<element name="text:note-continuation-notice-forward">
+					<text/>
+				</element>
+			</optional>
+			<optional>
+				<element name="text:note-continuation-notice-backward">
+					<text/>
+				</element>
+			</optional>
+		</interleave>
+	</define>
+	<define name="text-bibliography-configuration">
+		<element name="text:bibliography-configuration">
+			<ref name="text-bibliography-configuration-attlist"/>
+			<zeroOrMore>
+				<ref name="text-sort-key"/>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="text-bibliography-configuration-attlist">
+		<interleave>
+			<optional>
+				<attribute name="text:prefix">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:suffix">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:numbered-entries">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:sort-by-position">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="fo:language">
+					<ref name="languageCode"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="fo:country">
+					<ref name="countryCode"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="fo:script">
+					<ref name="scriptCode"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:rfc-language-tag">
+					<ref name="language"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:sort-algorithm">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="text-sort-key">
+		<element name="text:sort-key">
+			<ref name="text-sort-key-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="text-sort-key-attlist">
+		<attribute name="text:key">
+			<choice>
+				<value>address</value>
+				<value>annote</value>
+				<value>author</value>
+				<value>bibliography-type</value>
+				<value>booktitle</value>
+				<value>chapter</value>
+				<value>custom1</value>
+				<value>custom2</value>
+				<value>custom3</value>
+				<value>custom4</value>
+				<value>custom5</value>
+				<value>edition</value>
+				<value>editor</value>
+				<value>howpublished</value>
+				<value>identifier</value>
+				<value>institution</value>
+				<value>isbn</value>
+				<value>issn</value>
+				<value>journal</value>
+				<value>month</value>
+				<value>note</value>
+				<value>number</value>
+				<value>organizations</value>
+				<value>pages</value>
+				<value>publisher</value>
+				<value>report-type</value>
+				<value>school</value>
+				<value>series</value>
+				<value>title</value>
+				<value>url</value>
+				<value>volume</value>
+				<value>year</value>
+			</choice>
+		</attribute>
+		<optional>
+			<attribute name="text:sort-ascending">
+				<ref name="boolean"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="text-list-style">
+		<element name="text:list-style">
+			<ref name="text-list-style-attr"/>
+			<zeroOrMore>
+				<ref name="text-list-style-content"/>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="text-list-style-attr">
+		<interleave>
+			<attribute name="style:name">
+				<ref name="styleName"/>
+			</attribute>
+			<optional>
+				<attribute name="style:display-name">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:consecutive-numbering">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="text-list-style-content">
+		<choice>
+			<element name="text:list-level-style-number">
+				<ref name="text-list-level-style-attr"/>
+				<ref name="text-list-level-style-number-attr"/>
+				<optional>
+					<ref name="style-list-level-properties"/>
+				</optional>
+				<optional>
+					<ref name="style-text-properties"/>
+				</optional>
+			</element>
+			<element name="text:list-level-style-bullet">
+				<ref name="text-list-level-style-attr"/>
+				<ref name="text-list-level-style-bullet-attr"/>
+				<optional>
+					<ref name="style-list-level-properties"/>
+				</optional>
+				<optional>
+					<ref name="style-text-properties"/>
+				</optional>
+			</element>
+			<element name="text:list-level-style-image">
+				<ref name="text-list-level-style-attr"/>
+				<ref name="text-list-level-style-image-attr"/>
+				<optional>
+					<ref name="style-list-level-properties"/>
+				</optional>
+			</element>
+		</choice>
+	</define>
+	<define name="text-list-level-style-number-attr">
+		<interleave>
+			<optional>
+				<attribute name="text:style-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+			<ref name="common-num-format-attlist"/>
+			<ref name="common-num-format-prefix-suffix-attlist"/>
+			<optional>
+				<attribute name="text:display-levels">
+					<ref name="positiveInteger"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:start-value">
+					<ref name="positiveInteger"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="text-list-level-style-bullet-attr">
+		<interleave>
+			<optional>
+				<attribute name="text:style-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+			<attribute name="text:bullet-char">
+				<ref name="character"/>
+			</attribute>
+			<ref name="common-num-format-prefix-suffix-attlist"/>
+			<optional>
+				<attribute name="text:bullet-relative-size">
+					<ref name="percent"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="text-list-level-style-image-attr">
+		<choice>
+			<ref name="common-draw-data-attlist"/>
+			<ref name="office-binary-data"/>
+		</choice>
+	</define>
+	<define name="text-list-level-style-attr">
+		<attribute name="text:level">
+			<ref name="positiveInteger"/>
+		</attribute>
+	</define>
+	<define name="text-outline-style">
+		<element name="text:outline-style">
+			<ref name="text-outline-style-attr"/>
+			<oneOrMore>
+				<ref name="text-outline-level-style"/>
+			</oneOrMore>
+		</element>
+	</define>
+	<define name="text-outline-style-attr">
+		<attribute name="style:name">
+			<ref name="styleName"/>
+		</attribute>
+	</define>
+	<define name="text-outline-level-style">
+		<element name="text:outline-level-style">
+			<ref name="text-outline-level-style-attlist"/>
+			<optional>
+				<ref name="style-list-level-properties"/>
+			</optional>
+			<optional>
+				<ref name="style-text-properties"/>
+			</optional>
+		</element>
+	</define>
+	<define name="text-outline-level-style-attlist">
+		<interleave>
+			<attribute name="text:level">
+				<ref name="positiveInteger"/>
+			</attribute>
+			<optional>
+				<attribute name="text:style-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+			<ref name="common-num-format-attlist"/>
+			<ref name="common-num-format-prefix-suffix-attlist"/>
+			<optional>
+				<attribute name="text:display-levels">
+					<ref name="positiveInteger"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:start-value">
+					<ref name="positiveInteger"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="style-graphic-properties">
+		<element name="style:graphic-properties">
+			<ref name="style-graphic-properties-content-strict"/>
+		</element>
+	</define>
+	<define name="style-graphic-properties-content-strict">
+		<ref name="style-graphic-properties-attlist"/>
+		<ref name="style-graphic-fill-properties-attlist"/>
+		<ref name="style-graphic-properties-elements"/>
+	</define>
+	<define name="style-drawing-page-properties">
+		<element name="style:drawing-page-properties">
+			<ref name="style-drawing-page-properties-content-strict"/>
+		</element>
+	</define>
+	<define name="style-drawing-page-properties-content-strict">
+		<ref name="style-graphic-fill-properties-attlist"/>
+		<ref name="style-drawing-page-properties-attlist"/>
+		<ref name="style-drawing-page-properties-elements"/>
+	</define>
+	<define name="draw-gradient">
+		<element name="draw:gradient">
+			<ref name="common-draw-gradient-attlist"/>
+			<ref name="draw-gradient-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="common-draw-gradient-attlist">
+		<interleave>
+			<optional>
+				<attribute name="draw:name">
+					<ref name="styleName"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:display-name">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<attribute name="draw:style">
+				<ref name="gradient-style"/>
+			</attribute>
+			<optional>
+				<attribute name="draw:cx">
+					<ref name="percent"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:cy">
+					<ref name="percent"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:angle">
+					<ref name="angle"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:border">
+					<ref name="percent"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="gradient-style">
+		<choice>
+			<value>linear</value>
+			<value>axial</value>
+			<value>radial</value>
+			<value>ellipsoid</value>
+			<value>square</value>
+			<value>rectangular</value>
+		</choice>
+	</define>
+	<define name="draw-gradient-attlist">
+		<interleave>
+			<optional>
+				<attribute name="draw:start-color">
+					<ref name="color"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:end-color">
+					<ref name="color"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:start-intensity">
+					<ref name="zeroToHundredPercent"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:end-intensity">
+					<ref name="zeroToHundredPercent"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="svg-linearGradient">
+		<element name="svg:linearGradient">
+			<ref name="common-svg-gradient-attlist"/>
+			<optional>
+				<attribute name="svg:x1">
+					<choice>
+						<ref name="coordinate"/>
+						<ref name="percent"/>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="svg:y1">
+					<choice>
+						<ref name="coordinate"/>
+						<ref name="percent"/>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="svg:x2">
+					<choice>
+						<ref name="coordinate"/>
+						<ref name="percent"/>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="svg:y2">
+					<choice>
+						<ref name="coordinate"/>
+						<ref name="percent"/>
+					</choice>
+				</attribute>
+			</optional>
+			<zeroOrMore>
+				<ref name="svg-stop"/>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="svg-radialGradient">
+		<element name="svg:radialGradient">
+			<ref name="common-svg-gradient-attlist"/>
+			<optional>
+				<attribute name="svg:cx">
+					<choice>
+						<ref name="coordinate"/>
+						<ref name="percent"/>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="svg:cy">
+					<choice>
+						<ref name="coordinate"/>
+						<ref name="percent"/>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="svg:r">
+					<choice>
+						<ref name="coordinate"/>
+						<ref name="percent"/>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="svg:fx">
+					<choice>
+						<ref name="coordinate"/>
+						<ref name="percent"/>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="svg:fy">
+					<choice>
+						<ref name="coordinate"/>
+						<ref name="percent"/>
+					</choice>
+				</attribute>
+			</optional>
+			<zeroOrMore>
+				<ref name="svg-stop"/>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="svg-stop">
+		<element name="svg:stop">
+			<attribute name="svg:offset">
+				<choice>
+					<ref name="double"/>
+					<ref name="percent"/>
+				</choice>
+			</attribute>
+			<optional>
+				<attribute name="svg:stop-color">
+					<ref name="color"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="svg:stop-opacity">
+					<ref name="double"/>
+				</attribute>
+			</optional>
+		</element>
+	</define>
+	<define name="common-svg-gradient-attlist">
+		<interleave>
+			<optional>
+				<attribute name="svg:gradientUnits">
+					<value>objectBoundingBox</value>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="svg:gradientTransform">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="svg:spreadMethod">
+					<choice>
+						<value>pad</value>
+						<value>reflect</value>
+						<value>repeat</value>
+					</choice>
+				</attribute>
+			</optional>
+			<attribute name="draw:name">
+				<ref name="styleName"/>
+			</attribute>
+			<optional>
+				<attribute name="draw:display-name">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="draw-hatch">
+		<element name="draw:hatch">
+			<ref name="draw-hatch-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="draw-hatch-attlist">
+		<interleave>
+			<attribute name="draw:name">
+				<ref name="styleName"/>
+			</attribute>
+			<optional>
+				<attribute name="draw:display-name">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<attribute name="draw:style">
+				<choice>
+					<value>single</value>
+					<value>double</value>
+					<value>triple</value>
+				</choice>
+			</attribute>
+			<optional>
+				<attribute name="draw:color">
+					<ref name="color"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:distance">
+					<ref name="length"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:rotation">
+					<ref name="angle"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="draw-fill-image">
+		<element name="draw:fill-image">
+			<ref name="draw-fill-image-attlist"/>
+			<attribute name="xlink:type">
+				<value>simple</value>
+			</attribute>
+			<attribute name="xlink:href">
+				<ref name="anyIRI"/>
+			</attribute>
+			<optional>
+				<attribute name="xlink:show">
+					<value>embed</value>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="xlink:actuate">
+					<value>onLoad</value>
+				</attribute>
+			</optional>
+			<empty/>
+		</element>
+	</define>
+	<define name="draw-fill-image-attlist">
+		<interleave>
+			<attribute name="draw:name">
+				<ref name="styleName"/>
+			</attribute>
+			<optional>
+				<attribute name="draw:display-name">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="svg:width">
+					<ref name="length"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="svg:height">
+					<ref name="length"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="draw-opacity">
+		<element name="draw:opacity">
+			<ref name="common-draw-gradient-attlist"/>
+			<ref name="draw-opacity-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="draw-opacity-attlist">
+		<optional>
+			<attribute name="draw:start">
+				<ref name="zeroToHundredPercent"/>
+			</attribute>
+		</optional>
+		<optional>
+			<attribute name="draw:end">
+				<ref name="zeroToHundredPercent"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="draw-marker">
+		<element name="draw:marker">
+			<ref name="draw-marker-attlist"/>
+			<ref name="common-draw-viewbox-attlist"/>
+			<ref name="common-draw-path-data-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="draw-marker-attlist">
+		<interleave>
+			<attribute name="draw:name">
+				<ref name="styleName"/>
+			</attribute>
+			<optional>
+				<attribute name="draw:display-name">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="draw-stroke-dash">
+		<element name="draw:stroke-dash">
+			<ref name="draw-stroke-dash-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="draw-stroke-dash-attlist">
+		<interleave>
+			<attribute name="draw:name">
+				<ref name="styleName"/>
+			</attribute>
+			<optional>
+				<attribute name="draw:display-name">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:style">
+					<choice>
+						<value>rect</value>
+						<value>round</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:dots1">
+					<ref name="integer"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:dots1-length">
+					<choice>
+						<ref name="length"/>
+						<ref name="percent"/>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:dots2">
+					<ref name="integer"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:dots2-length">
+					<choice>
+						<ref name="length"/>
+						<ref name="percent"/>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:distance">
+					<choice>
+						<ref name="length"/>
+						<ref name="percent"/>
+					</choice>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="style-presentation-page-layout">
+		<element name="style:presentation-page-layout">
+			<attribute name="style:name">
+				<ref name="styleName"/>
+			</attribute>
+			<optional>
+				<attribute name="style:display-name">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<zeroOrMore>
+				<ref name="presentation-placeholder"/>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="presentation-placeholder">
+		<element name="presentation:placeholder">
+			<attribute name="presentation:object">
+				<ref name="presentation-classes"/>
+			</attribute>
+			<attribute name="svg:x">
+				<choice>
+					<ref name="coordinate"/>
+					<ref name="percent"/>
+				</choice>
+			</attribute>
+			<attribute name="svg:y">
+				<choice>
+					<ref name="coordinate"/>
+					<ref name="percent"/>
+				</choice>
+			</attribute>
+			<attribute name="svg:width">
+				<choice>
+					<ref name="length"/>
+					<ref name="percent"/>
+				</choice>
+			</attribute>
+			<attribute name="svg:height">
+				<choice>
+					<ref name="length"/>
+					<ref name="percent"/>
+				</choice>
+			</attribute>
+			<empty/>
+		</element>
+	</define>
+	<define name="style-page-layout-properties">
+		<element name="style:page-layout-properties">
+			<ref name="style-page-layout-properties-content-strict"/>
+		</element>
+	</define>
+	<define name="style-page-layout-properties-content-strict">
+		<ref name="style-page-layout-properties-attlist"/>
+		<ref name="style-page-layout-properties-elements"/>
+	</define>
+	<define name="style-page-layout-properties-attlist">
+		<interleave>
+			<optional>
+				<attribute name="fo:page-width">
+					<ref name="length"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="fo:page-height">
+					<ref name="length"/>
+				</attribute>
+			</optional>
+			<optional>
+				<ref name="common-num-format-attlist"/>
+			</optional>
+			<ref name="common-num-format-prefix-suffix-attlist"/>
+			<optional>
+				<attribute name="style:paper-tray-name">
+					<choice>
+						<value>default</value>
+						<ref name="string"/>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:print-orientation">
+					<choice>
+						<value>portrait</value>
+						<value>landscape</value>
+					</choice>
+				</attribute>
+			</optional>
+			<ref name="common-horizontal-margin-attlist"/>
+			<ref name="common-vertical-margin-attlist"/>
+			<ref name="common-margin-attlist"/>
+			<ref name="common-border-attlist"/>
+			<ref name="common-border-line-width-attlist"/>
+			<ref name="common-padding-attlist"/>
+			<ref name="common-shadow-attlist"/>
+			<ref name="common-background-color-attlist"/>
+			<optional>
+				<attribute name="style:register-truth-ref-style-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:print">
+					<list>
+						<zeroOrMore>
+							<choice>
+								<value>headers</value>
+								<value>grid</value>
+								<value>annotations</value>
+								<value>objects</value>
+								<value>charts</value>
+								<value>drawings</value>
+								<value>formulas</value>
+								<value>zero-values</value>
+							</choice>
+						</zeroOrMore>
+					</list>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:print-page-order">
+					<choice>
+						<value>ttb</value>
+						<value>ltr</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:first-page-number">
+					<choice>
+						<ref name="positiveInteger"/>
+						<value>continue</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:scale-to">
+					<ref name="percent"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:scale-to-pages">
+					<ref name="positiveInteger"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:table-centering">
+					<choice>
+						<value>horizontal</value>
+						<value>vertical</value>
+						<value>both</value>
+						<value>none</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:footnote-max-height">
+					<ref name="length"/>
+				</attribute>
+			</optional>
+			<ref name="common-writing-mode-attlist"/>
+			<optional>
+				<attribute name="style:layout-grid-mode">
+					<choice>
+						<value>none</value>
+						<value>line</value>
+						<value>both</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:layout-grid-standard-mode">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:layout-grid-base-height">
+					<ref name="length"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:layout-grid-ruby-height">
+					<ref name="length"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:layout-grid-lines">
+					<ref name="positiveInteger"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:layout-grid-base-width">
+					<ref name="length"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:layout-grid-color">
+					<ref name="color"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:layout-grid-ruby-below">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:layout-grid-print">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:layout-grid-display">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:layout-grid-snap-to">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="style-page-layout-properties-elements">
+		<interleave>
+			<ref name="style-background-image"/>
+			<ref name="style-columns"/>
+			<ref name="style-footnote-sep"/>
+		</interleave>
+	</define>
+	<define name="style-footnote-sep">
+		<optional>
+			<element name="style:footnote-sep">
+				<ref name="style-footnote-sep-attlist"/>
+				<empty/>
+			</element>
+		</optional>
+	</define>
+	<define name="style-footnote-sep-attlist">
+		<optional>
+			<attribute name="style:width">
+				<ref name="length"/>
+			</attribute>
+		</optional>
+		<optional>
+			<attribute name="style:rel-width">
+				<ref name="percent"/>
+			</attribute>
+		</optional>
+		<optional>
+			<attribute name="style:color">
+				<ref name="color"/>
+			</attribute>
+		</optional>
+		<optional>
+			<attribute name="style:line-style">
+				<ref name="lineStyle"/>
+			</attribute>
+		</optional>
+		<optional>
+			<attribute name="style:adjustment">
+				<choice>
+					<value>left</value>
+					<value>center</value>
+					<value>right</value>
+				</choice>
+			</attribute>
+		</optional>
+		<optional>
+			<attribute name="style:distance-before-sep">
+				<ref name="length"/>
+			</attribute>
+		</optional>
+		<optional>
+			<attribute name="style:distance-after-sep">
+				<ref name="length"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="style-header-footer-properties">
+		<element name="style:header-footer-properties">
+			<ref name="style-header-footer-properties-content-strict"/>
+		</element>
+	</define>
+	<define name="style-header-footer-properties-content-strict">
+		<ref name="style-header-footer-properties-attlist"/>
+		<ref name="style-header-footer-properties-elements"/>
+	</define>
+	<define name="style-header-footer-properties-attlist">
+		<interleave>
+			<optional>
+				<attribute name="svg:height">
+					<ref name="length"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="fo:min-height">
+					<ref name="length"/>
+				</attribute>
+			</optional>
+			<ref name="common-horizontal-margin-attlist"/>
+			<ref name="common-vertical-margin-attlist"/>
+			<ref name="common-margin-attlist"/>
+			<ref name="common-border-attlist"/>
+			<ref name="common-border-line-width-attlist"/>
+			<ref name="common-padding-attlist"/>
+			<ref name="common-background-color-attlist"/>
+			<ref name="common-shadow-attlist"/>
+			<optional>
+				<attribute name="style:dynamic-spacing">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="style-header-footer-properties-elements">
+		<ref name="style-background-image"/>
+	</define>
+	<define name="style-text-properties">
+		<element name="style:text-properties">
+			<ref name="style-text-properties-content-strict"/>
+		</element>
+	</define>
+	<define name="style-text-properties-content-strict">
+		<ref name="style-text-properties-attlist"/>
+		<ref name="style-text-properties-elements"/>
+	</define>
+	<define name="style-text-properties-elements">
+		<empty/>
+	</define>
+	<define name="style-text-properties-attlist">
+		<interleave>
+			<optional>
+				<attribute name="fo:font-variant">
+					<ref name="fontVariant"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="fo:text-transform">
+					<choice>
+						<value>none</value>
+						<value>lowercase</value>
+						<value>uppercase</value>
+						<value>capitalize</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="fo:color">
+					<ref name="color"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:use-window-font-color">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:text-outline">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:text-line-through-type">
+					<ref name="lineType"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:text-line-through-style">
+					<ref name="lineStyle"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:text-line-through-width">
+					<ref name="lineWidth"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:text-line-through-color">
+					<choice>
+						<value>font-color</value>
+						<ref name="color"/>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:text-line-through-text">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:text-line-through-text-style">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:text-position">
+					<list>
+						<choice>
+							<ref name="percent"/>
+							<value>super</value>
+							<value>sub</value>
+						</choice>
+						<optional>
+							<ref name="percent"/>
+						</optional>
+					</list>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:font-name">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:font-name-asian">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:font-name-complex">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="fo:font-family">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:font-family-asian">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:font-family-complex">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:font-family-generic">
+					<ref name="fontFamilyGeneric"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:font-family-generic-asian">
+					<ref name="fontFamilyGeneric"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:font-family-generic-complex">
+					<ref name="fontFamilyGeneric"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:font-style-name">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:font-style-name-asian">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:font-style-name-complex">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:font-pitch">
+					<ref name="fontPitch"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:font-pitch-asian">
+					<ref name="fontPitch"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:font-pitch-complex">
+					<ref name="fontPitch"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:font-charset">
+					<ref name="textEncoding"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:font-charset-asian">
+					<ref name="textEncoding"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:font-charset-complex">
+					<ref name="textEncoding"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="fo:font-size">
+					<choice>
+						<ref name="positiveLength"/>
+						<ref name="percent"/>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:font-size-asian">
+					<choice>
+						<ref name="positiveLength"/>
+						<ref name="percent"/>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:font-size-complex">
+					<choice>
+						<ref name="positiveLength"/>
+						<ref name="percent"/>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:font-size-rel">
+					<ref name="length"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:font-size-rel-asian">
+					<ref name="length"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:font-size-rel-complex">
+					<ref name="length"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:script-type">
+					<choice>
+						<value>latin</value>
+						<value>asian</value>
+						<value>complex</value>
+						<value>ignore</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="fo:letter-spacing">
+					<choice>
+						<ref name="length"/>
+						<value>normal</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="fo:language">
+					<ref name="languageCode"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:language-asian">
+					<ref name="languageCode"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:language-complex">
+					<ref name="languageCode"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="fo:country">
+					<ref name="countryCode"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:country-asian">
+					<ref name="countryCode"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:country-complex">
+					<ref name="countryCode"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="fo:script">
+					<ref name="scriptCode"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:script-asian">
+					<ref name="scriptCode"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:script-complex">
+					<ref name="scriptCode"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:rfc-language-tag">
+					<ref name="language"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:rfc-language-tag-asian">
+					<ref name="language"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:rfc-language-tag-complex">
+					<ref name="language"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="fo:font-style">
+					<ref name="fontStyle"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:font-style-asian">
+					<ref name="fontStyle"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:font-style-complex">
+					<ref name="fontStyle"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:font-relief">
+					<choice>
+						<value>none</value>
+						<value>embossed</value>
+						<value>engraved</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="fo:text-shadow">
+					<ref name="shadowType"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:text-underline-type">
+					<ref name="lineType"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:text-underline-style">
+					<ref name="lineStyle"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:text-underline-width">
+					<ref name="lineWidth"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:text-underline-color">
+					<choice>
+						<value>font-color</value>
+						<ref name="color"/>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:text-overline-type">
+					<ref name="lineType"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:text-overline-style">
+					<ref name="lineStyle"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:text-overline-width">
+					<ref name="lineWidth"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:text-overline-color">
+					<choice>
+						<value>font-color</value>
+						<ref name="color"/>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:text-overline-mode">
+					<ref name="lineMode"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="fo:font-weight">
+					<ref name="fontWeight"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:font-weight-asian">
+					<ref name="fontWeight"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:font-weight-complex">
+					<ref name="fontWeight"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:text-underline-mode">
+					<ref name="lineMode"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:text-line-through-mode">
+					<ref name="lineMode"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:letter-kerning">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:text-blinking">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<ref name="common-background-color-attlist"/>
+			<optional>
+				<attribute name="style:text-combine">
+					<choice>
+						<value>none</value>
+						<value>letters</value>
+						<value>lines</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:text-combine-start-char">
+					<ref name="character"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:text-combine-end-char">
+					<ref name="character"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:text-emphasize">
+					<choice>
+						<value>none</value>
+						<list>
+							<choice>
+								<value>none</value>
+								<value>accent</value>
+								<value>dot</value>
+								<value>circle</value>
+								<value>disc</value>
+							</choice>
+							<choice>
+								<value>above</value>
+								<value>below</value>
+							</choice>
+						</list>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:text-scale">
+					<ref name="percent"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:text-rotation-angle">
+					<ref name="angle"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:text-rotation-scale">
+					<choice>
+						<value>fixed</value>
+						<value>line-height</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="fo:hyphenate">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="fo:hyphenation-remain-char-count">
+					<ref name="positiveInteger"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="fo:hyphenation-push-char-count">
+					<ref name="positiveInteger"/>
+				</attribute>
+			</optional>
+			<choice>
+				<attribute name="text:display">
+					<value>true</value>
+				</attribute>
+				<attribute name="text:display">
+					<value>none</value>
+				</attribute>
+				<group>
+					<attribute name="text:display">
+						<value>condition</value>
+					</attribute>
+					<attribute name="text:condition">
+						<value>none</value>
+					</attribute>
+				</group>
+				<empty/>
+			</choice>
+		</interleave>
+	</define>
+	<define name="fontVariant">
+		<choice>
+			<value>normal</value>
+			<value>small-caps</value>
+		</choice>
+	</define>
+	<define name="fontFamilyGeneric">
+		<choice>
+			<value>roman</value>
+			<value>swiss</value>
+			<value>modern</value>
+			<value>decorative</value>
+			<value>script</value>
+			<value>system</value>
+		</choice>
+	</define>
+	<define name="fontPitch">
+		<choice>
+			<value>fixed</value>
+			<value>variable</value>
+		</choice>
+	</define>
+	<define name="textEncoding">
+		<data type="string">
+			<param name="pattern">[A-Za-z][A-Za-z0-9._\-]*</param>
+		</data>
+	</define>
+	<define name="fontStyle">
+		<choice>
+			<value>normal</value>
+			<value>italic</value>
+			<value>oblique</value>
+		</choice>
+	</define>
+	<define name="shadowType">
+		<choice>
+			<value>none</value>
+			<ref name="string"/>
+		</choice>
+	</define>
+	<define name="lineType">
+		<choice>
+			<value>none</value>
+			<value>single</value>
+			<value>double</value>
+		</choice>
+	</define>
+	<define name="lineStyle">
+		<choice>
+			<value>none</value>
+			<value>solid</value>
+			<value>dotted</value>
+			<value>dash</value>
+			<value>long-dash</value>
+			<value>dot-dash</value>
+			<value>dot-dot-dash</value>
+			<value>wave</value>
+		</choice>
+	</define>
+	<define name="lineWidth">
+		<choice>
+			<value>auto</value>
+			<value>normal</value>
+			<value>bold</value>
+			<value>thin</value>
+			<value>medium</value>
+			<value>thick</value>
+			<ref name="positiveInteger"/>
+			<ref name="percent"/>
+			<ref name="positiveLength"/>
+		</choice>
+	</define>
+	<define name="fontWeight">
+		<choice>
+			<value>normal</value>
+			<value>bold</value>
+			<value>100</value>
+			<value>200</value>
+			<value>300</value>
+			<value>400</value>
+			<value>500</value>
+			<value>600</value>
+			<value>700</value>
+			<value>800</value>
+			<value>900</value>
+		</choice>
+	</define>
+	<define name="lineMode">
+		<choice>
+			<value>continuous</value>
+			<value>skip-white-space</value>
+		</choice>
+	</define>
+	<define name="style-paragraph-properties">
+		<element name="style:paragraph-properties">
+			<ref name="style-paragraph-properties-content-strict"/>
+		</element>
+	</define>
+	<define name="style-paragraph-properties-content-strict">
+		<ref name="style-paragraph-properties-attlist"/>
+		<ref name="style-paragraph-properties-elements"/>
+	</define>
+	<define name="style-paragraph-properties-attlist">
+		<interleave>
+			<optional>
+				<attribute name="fo:line-height">
+					<choice>
+						<value>normal</value>
+						<ref name="nonNegativeLength"/>
+						<ref name="percent"/>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:line-height-at-least">
+					<ref name="nonNegativeLength"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:line-spacing">
+					<ref name="length"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:font-independent-line-spacing">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<ref name="common-text-align"/>
+			<optional>
+				<attribute name="fo:text-align-last">
+					<choice>
+						<value>start</value>
+						<value>center</value>
+						<value>justify</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:justify-single-word">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="fo:keep-together">
+					<choice>
+						<value>auto</value>
+						<value>always</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="fo:widows">
+					<ref name="nonNegativeInteger"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="fo:orphans">
+					<ref name="nonNegativeInteger"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:tab-stop-distance">
+					<ref name="nonNegativeLength"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="fo:hyphenation-keep">
+					<choice>
+						<value>auto</value>
+						<value>page</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="fo:hyphenation-ladder-count">
+					<choice>
+						<value>no-limit</value>
+						<ref name="positiveInteger"/>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:register-true">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+	
+			<ref name="common-horizontal-margin-attlist"/>
+			<optional>
+				<attribute name="fo:text-indent">
+					<choice>
+						<ref name="length"/>
+						<ref name="percent"/>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:auto-text-indent">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<ref name="common-vertical-margin-attlist"/>
+			<ref name="common-margin-attlist"/>
+			<ref name="common-break-attlist"/>
+			<ref name="common-background-color-attlist"/>
+			<ref name="common-border-attlist"/>
+			<ref name="common-border-line-width-attlist"/>
+			<optional>
+				<attribute name="style:join-border">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<ref name="common-padding-attlist"/>
+			<ref name="common-shadow-attlist"/>
+			<ref name="common-keep-with-next-attlist"/>
+			<optional>
+				<attribute name="text:number-lines">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:line-number">
+					<ref name="nonNegativeInteger"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:text-autospace">
+					<choice>
+						<value>none</value>
+						<value>ideograph-alpha</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:punctuation-wrap">
+					<choice>
+						<value>simple</value>
+						<value>hanging</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:line-break">
+					<choice>
+						<value>normal</value>
+						<value>strict</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:vertical-align">
+					<choice>
+						<value>top</value>
+						<value>middle</value>
+						<value>bottom</value>
+						<value>auto</value>
+						<value>baseline</value>
+					</choice>
+				</attribute>
+			</optional>
+			<ref name="common-writing-mode-attlist"/>
+			<optional>
+				<attribute name="style:writing-mode-automatic">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:snap-to-layout-grid">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<ref name="common-page-number-attlist"/>
+			<ref name="common-background-transparency-attlist"/>
+		</interleave>
+	</define>
+	<define name="common-text-align">
+		<optional>
+			<attribute name="fo:text-align">
+				<choice>
+					<value>start</value>
+					<value>end</value>
+					<value>left</value>
+					<value>right</value>
+					<value>center</value>
+					<value>justify</value>
+				</choice>
+			</attribute>
+		</optional>
+	</define>
+	<define name="style-paragraph-properties-elements">
+		<interleave>
+			<ref name="style-tab-stops"/>
+			<ref name="style-drop-cap"/>
+			<ref name="style-background-image"/>
+		</interleave>
+	</define>
+	<define name="style-tab-stops">
+		<optional>
+			<element name="style:tab-stops">
+				<zeroOrMore>
+					<ref name="style-tab-stop"/>
+				</zeroOrMore>
+			</element>
+		</optional>
+	</define>
+	<define name="style-tab-stop">
+		<element name="style:tab-stop">
+			<ref name="style-tab-stop-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="style-tab-stop-attlist">
+		<interleave>
+			<attribute name="style:position">
+				<ref name="length"/>
+			</attribute>
+			<choice>
+				<optional>
+					<attribute name="style:type">
+						<choice>
+							<value>left</value>
+							<value>center</value>
+							<value>right</value>
+						</choice>
+					</attribute>
+				</optional>
+				<group>
+					<attribute name="style:type">
+						<value>char</value>
+					</attribute>
+					<ref name="style-tab-stop-char-attlist"/>
+				</group>
+			</choice>
+			<optional>
+				<attribute name="style:leader-type">
+					<ref name="lineType"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:leader-style">
+					<ref name="lineStyle"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:leader-width">
+					<ref name="lineWidth"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:leader-color">
+					<choice>
+						<value>font-color</value>
+						<ref name="color"/>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:leader-text">
+					<ref name="character"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:leader-text-style">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="style-tab-stop-char-attlist">
+		<attribute name="style:char">
+			<ref name="character"/>
+		</attribute>
+	</define>
+	<define name="style-drop-cap">
+		<optional>
+			<element name="style:drop-cap">
+				<ref name="style-drop-cap-attlist"/>
+				<empty/>
+			</element>
+		</optional>
+	</define>
+	<define name="style-drop-cap-attlist">
+		<interleave>
+			<optional>
+				<attribute name="style:length">
+					<choice>
+						<value>word</value>
+						<ref name="positiveInteger"/>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:lines">
+					<ref name="positiveInteger"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:distance">
+					<ref name="length"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:style-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="common-horizontal-margin-attlist">
+		<optional>
+			<attribute name="fo:margin-left">
+				<choice>
+					<ref name="length"/>
+					<ref name="percent"/>
+				</choice>
+			</attribute>
+		</optional>
+		<optional>
+			<attribute name="fo:margin-right">
+				<choice>
+					<ref name="length"/>
+					<ref name="percent"/>
+				</choice>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-vertical-margin-attlist">
+		<optional>
+			<attribute name="fo:margin-top">
+				<choice>
+					<ref name="nonNegativeLength"/>
+					<ref name="percent"/>
+				</choice>
+			</attribute>
+		</optional>
+		<optional>
+			<attribute name="fo:margin-bottom">
+				<choice>
+					<ref name="nonNegativeLength"/>
+					<ref name="percent"/>
+				</choice>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-margin-attlist">
+		<optional>
+			<attribute name="fo:margin">
+				<choice>
+					<ref name="nonNegativeLength"/>
+					<ref name="percent"/>
+				</choice>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-break-attlist">
+		<optional>
+			<attribute name="fo:break-before">
+				<choice>
+					<value>auto</value>
+					<value>column</value>
+					<value>page</value>
+				</choice>
+			</attribute>
+		</optional>
+		<optional>
+			<attribute name="fo:break-after">
+				<choice>
+					<value>auto</value>
+					<value>column</value>
+					<value>page</value>
+				</choice>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-background-color-attlist">
+		<optional>
+			<attribute name="fo:background-color">
+				<choice>
+					<value>transparent</value>
+					<ref name="color"/>
+				</choice>
+			</attribute>
+		</optional>
+	</define>
+	<define name="style-background-image">
+		<optional>
+			<element name="style:background-image">
+				<ref name="style-background-image-attlist"/>
+				<choice>
+					<ref name="common-draw-data-attlist"/>
+					<ref name="office-binary-data"/>
+					<empty/>
+				</choice>
+			</element>
+		</optional>
+	</define>
+	<define name="style-background-image-attlist">
+		<interleave>
+			<optional>
+				<attribute name="style:repeat">
+					<choice>
+						<value>no-repeat</value>
+						<value>repeat</value>
+						<value>stretch</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:position">
+					<choice>
+						<value>left</value>
+						<value>center</value>
+						<value>right</value>
+						<value>top</value>
+						<value>bottom</value>
+						<list>
+							<ref name="horiBackPos"/>
+							<ref name="vertBackPos"/>
+						</list>
+						<list>
+							<ref name="vertBackPos"/>
+							<ref name="horiBackPos"/>
+						</list>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:filter-name">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:opacity">
+					<ref name="zeroToHundredPercent"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="horiBackPos">
+		<choice>
+			<value>left</value>
+			<value>center</value>
+			<value>right</value>
+		</choice>
+	</define>
+	<define name="vertBackPos">
+		<choice>
+			<value>top</value>
+			<value>center</value>
+			<value>bottom</value>
+		</choice>
+	</define>
+	<define name="common-border-attlist">
+		<optional>
+			<attribute name="fo:border">
+				<ref name="string"/>
+			</attribute>
+		</optional>
+		<optional>
+			<attribute name="fo:border-top">
+				<ref name="string"/>
+			</attribute>
+		</optional>
+		<optional>
+			<attribute name="fo:border-bottom">
+				<ref name="string"/>
+			</attribute>
+		</optional>
+		<optional>
+			<attribute name="fo:border-left">
+				<ref name="string"/>
+			</attribute>
+		</optional>
+		<optional>
+			<attribute name="fo:border-right">
+				<ref name="string"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-border-line-width-attlist">
+		<optional>
+			<attribute name="style:border-line-width">
+				<ref name="borderWidths"/>
+			</attribute>
+		</optional>
+		<optional>
+			<attribute name="style:border-line-width-top">
+				<ref name="borderWidths"/>
+			</attribute>
+		</optional>
+		<optional>
+			<attribute name="style:border-line-width-bottom">
+				<ref name="borderWidths"/>
+			</attribute>
+		</optional>
+		<optional>
+			<attribute name="style:border-line-width-left">
+				<ref name="borderWidths"/>
+			</attribute>
+		</optional>
+		<optional>
+			<attribute name="style:border-line-width-right">
+				<ref name="borderWidths"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="borderWidths">
+		<list>
+			<ref name="positiveLength"/>
+			<ref name="positiveLength"/>
+			<ref name="positiveLength"/>
+		</list>
+	</define>
+	<define name="common-padding-attlist">
+		<optional>
+			<attribute name="fo:padding">
+				<ref name="nonNegativeLength"/>
+			</attribute>
+		</optional>
+		<optional>
+			<attribute name="fo:padding-top">
+				<ref name="nonNegativeLength"/>
+			</attribute>
+		</optional>
+		<optional>
+			<attribute name="fo:padding-bottom">
+				<ref name="nonNegativeLength"/>
+			</attribute>
+		</optional>
+		<optional>
+			<attribute name="fo:padding-left">
+				<ref name="nonNegativeLength"/>
+			</attribute>
+		</optional>
+		<optional>
+			<attribute name="fo:padding-right">
+				<ref name="nonNegativeLength"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-shadow-attlist">
+		<optional>
+			<attribute name="style:shadow">
+				<ref name="shadowType"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-keep-with-next-attlist">
+		<optional>
+			<attribute name="fo:keep-with-next">
+				<choice>
+					<value>auto</value>
+					<value>always</value>
+				</choice>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-writing-mode-attlist">
+		<optional>
+			<attribute name="style:writing-mode">
+				<choice>
+					<value>lr-tb</value>
+					<value>rl-tb</value>
+					<value>tb-rl</value>
+					<value>tb-lr</value>
+					<value>lr</value>
+					<value>rl</value>
+					<value>tb</value>
+					<value>page</value>
+				</choice>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-page-number-attlist">
+		<optional>
+			<attribute name="style:page-number">
+				<choice>
+					<ref name="positiveInteger"/>
+					<value>auto</value>
+				</choice>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-background-transparency-attlist">
+		<optional>
+			<attribute name="style:background-transparency">
+				<ref name="zeroToHundredPercent"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="style-ruby-properties">
+		<element name="style:ruby-properties">
+			<ref name="style-ruby-properties-content-strict"/>
+		</element>
+	</define>
+	<define name="style-ruby-properties-content-strict">
+		<ref name="style-ruby-properties-attlist"/>
+		<ref name="style-ruby-properties-elements"/>
+	</define>
+	<define name="style-ruby-properties-elements">
+		<empty/>
+	</define>
+	<define name="style-ruby-properties-attlist">
+		<interleave>
+			<optional>
+				<attribute name="style:ruby-position">
+					<choice>
+						<value>above</value>
+						<value>below</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:ruby-align">
+					<choice>
+						<value>left</value>
+						<value>center</value>
+						<value>right</value>
+						<value>distribute-letter</value>
+						<value>distribute-space</value>
+					</choice>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="style-section-properties">
+		<element name="style:section-properties">
+			<ref name="style-section-properties-content-strict"/>
+		</element>
+	</define>
+	<define name="style-section-properties-content-strict">
+		<ref name="style-section-properties-attlist"/>
+		<ref name="style-section-properties-elements"/>
+	</define>
+	<define name="style-section-properties-attlist">
+		<interleave>
+			<ref name="common-background-color-attlist"/>
+			<ref name="common-horizontal-margin-attlist"/>
+			<optional>
+				<attribute name="style:protect">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<ref name="common-editable-attlist"/>
+			<optional>
+				<attribute name="text:dont-balance-text-columns">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<ref name="common-writing-mode-attlist"/>
+		</interleave>
+	</define>
+	<define name="style-section-properties-elements">
+		<interleave>
+			<ref name="style-background-image"/>
+			<ref name="style-columns"/>
+			<zeroOrMore>
+				<ref name="text-notes-configuration"/>
+			</zeroOrMore>
+		</interleave>
+	</define>
+	<define name="style-columns">
+		<optional>
+			<element name="style:columns">
+				<ref name="style-columns-attlist"/>
+				<optional>
+					<ref name="style-column-sep"/>
+				</optional>
+				<zeroOrMore>
+					<ref name="style-column"/>
+				</zeroOrMore>
+			</element>
+		</optional>
+	</define>
+	<define name="style-columns-attlist">
+		<interleave>
+			<attribute name="fo:column-count">
+				<ref name="positiveInteger"/>
+			</attribute>
+			<optional>
+				<attribute name="fo:column-gap">
+					<ref name="length"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="style-column">
+		<element name="style:column">
+			<ref name="style-column-attlist"/>
+		</element>
+	</define>
+	<define name="style-column-attlist">
+		<interleave>
+			<attribute name="style:rel-width">
+				<ref name="relativeLength"/>
+			</attribute>
+			<optional>
+				<attribute name="fo:start-indent">
+					<ref name="length"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="fo:end-indent">
+					<ref name="length"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="fo:space-before">
+					<ref name="length"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="fo:space-after">
+					<ref name="length"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="style-column-sep">
+		<element name="style:column-sep">
+			<ref name="style-column-sep-attlist"/>
+		</element>
+	</define>
+	<define name="style-column-sep-attlist">
+		<interleave>
+			<optional>
+				<attribute name="style:style">
+					<choice>
+						<value>none</value>
+						<value>solid</value>
+						<value>dotted</value>
+						<value>dashed</value>
+						<value>dot-dashed</value>
+					</choice>
+				</attribute>
+			</optional>
+			<attribute name="style:width">
+				<ref name="length"/>
+			</attribute>
+			<optional>
+				<attribute name="style:height">
+					<ref name="zeroToHundredPercent"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:vertical-align">
+					<choice>
+						<value>top</value>
+						<value>middle</value>
+						<value>bottom</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:color">
+					<ref name="color"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="style-table-properties">
+		<element name="style:table-properties">
+			<ref name="style-table-properties-content-strict"/>
+		</element>
+	</define>
+	<define name="style-table-properties-content-strict">
+		<ref name="style-table-properties-attlist"/>
+		<ref name="style-table-properties-elements"/>
+	</define>
+	<define name="style-table-properties-attlist">
+		<interleave>
+			<optional>
+				<attribute name="style:width">
+					<ref name="positiveLength"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:rel-width">
+					<ref name="percent"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:align">
+					<choice>
+						<value>left</value>
+						<value>center</value>
+						<value>right</value>
+						<value>margins</value>
+					</choice>
+				</attribute>
+			</optional>
+			<ref name="common-horizontal-margin-attlist"/>
+			<ref name="common-vertical-margin-attlist"/>
+			<ref name="common-margin-attlist"/>
+			<ref name="common-page-number-attlist"/>
+			<ref name="common-break-attlist"/>
+			<ref name="common-background-color-attlist"/>
+			<ref name="common-shadow-attlist"/>
+			<ref name="common-keep-with-next-attlist"/>
+			<optional>
+				<attribute name="style:may-break-between-rows">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:border-model">
+					<choice>
+						<value>collapsing</value>
+						<value>separating</value>
+					</choice>
+				</attribute>
+			</optional>
+			<ref name="common-writing-mode-attlist"/>
+			<optional>
+				<attribute name="table:display">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="style-table-properties-elements">
+		<ref name="style-background-image"/>
+	</define>
+	<define name="style-table-column-properties">
+		<element name="style:table-column-properties">
+			<ref name="style-table-column-properties-content-strict"/>
+		</element>
+	</define>
+	<define name="style-table-column-properties-content-strict">
+		<ref name="style-table-column-properties-attlist"/>
+		<ref name="style-table-column-properties-elements"/>
+	</define>
+	<define name="style-table-column-properties-elements">
+		<empty/>
+	</define>
+	<define name="style-table-column-properties-attlist">
+		<interleave>
+			<optional>
+				<attribute name="style:column-width">
+					<ref name="positiveLength"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:rel-column-width">
+					<ref name="relativeLength"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:use-optimal-column-width">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<ref name="common-break-attlist"/>
+		</interleave>
+	</define>
+	<define name="style-table-row-properties">
+		<element name="style:table-row-properties">
+			<ref name="style-table-row-properties-content-strict"/>
+		</element>
+	</define>
+	<define name="style-table-row-properties-content-strict">
+		<ref name="style-table-row-properties-attlist"/>
+		<ref name="style-table-row-properties-elements"/>
+	</define>
+	<define name="style-table-row-properties-attlist">
+		<interleave>
+			<optional>
+				<attribute name="style:row-height">
+					<ref name="positiveLength"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:min-row-height">
+					<ref name="nonNegativeLength"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:use-optimal-row-height">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<ref name="common-background-color-attlist"/>
+			<ref name="common-break-attlist"/>
+			<optional>
+				<attribute name="fo:keep-together">
+					<choice>
+						<value>auto</value>
+						<value>always</value>
+					</choice>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="style-table-row-properties-elements">
+		<ref name="style-background-image"/>
+	</define>
+	<define name="style-table-cell-properties">
+		<element name="style:table-cell-properties">
+			<ref name="style-table-cell-properties-content-strict"/>
+		</element>
+	</define>
+	<define name="style-table-cell-properties-content-strict">
+		<ref name="style-table-cell-properties-attlist"/>
+		<ref name="style-table-cell-properties-elements"/>
+	</define>
+	<define name="style-table-cell-properties-attlist">
+		<interleave>
+			<optional>
+				<attribute name="style:vertical-align">
+					<choice>
+						<value>top</value>
+						<value>middle</value>
+						<value>bottom</value>
+						<value>automatic</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:text-align-source">
+					<choice>
+						<value>fix</value>
+						<value>value-type</value>
+					</choice>
+				</attribute>
+			</optional>
+			<ref name="common-style-direction-attlist"/>
+			<optional>
+				<attribute name="style:glyph-orientation-vertical">
+					<choice>
+						<value>auto</value>
+						<value>0</value>
+						<value>0deg</value>
+						<value>0rad</value>
+						<value>0grad</value>
+					</choice>
+				</attribute>
+			</optional>
+			<ref name="common-writing-mode-attlist"/>
+			<ref name="common-shadow-attlist"/>
+			<ref name="common-background-color-attlist"/>
+			<ref name="common-border-attlist"/>
+			<optional>
+				<attribute name="style:diagonal-tl-br">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:diagonal-tl-br-widths">
+					<ref name="borderWidths"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:diagonal-bl-tr">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:diagonal-bl-tr-widths">
+					<ref name="borderWidths"/>
+				</attribute>
+			</optional>
+			<ref name="common-border-line-width-attlist"/>
+			<ref name="common-padding-attlist"/>
+			<optional>
+				<attribute name="fo:wrap-option">
+					<choice>
+						<value>no-wrap</value>
+						<value>wrap</value>
+					</choice>
+				</attribute>
+			</optional>
+			<ref name="common-rotation-angle-attlist"/>
+			<optional>
+				<attribute name="style:rotation-align">
+					<choice>
+						<value>none</value>
+						<value>bottom</value>
+						<value>top</value>
+						<value>center</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:cell-protect">
+					<choice>
+						<value>none</value>
+						<value>hidden-and-protected</value>
+						<list>
+							<oneOrMore>
+								<choice>
+									<value>protected</value>
+									<value>formula-hidden</value>
+								</choice>
+							</oneOrMore>
+						</list>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:print-content">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:decimal-places">
+					<ref name="nonNegativeInteger"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:repeat-content">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:shrink-to-fit">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="common-style-direction-attlist">
+		<optional>
+			<attribute name="style:direction">
+				<choice>
+					<value>ltr</value>
+					<value>ttb</value>
+				</choice>
+			</attribute>
+		</optional>
+	</define>
+	<define name="style-table-cell-properties-elements">
+		<ref name="style-background-image"/>
+	</define>
+	<define name="common-rotation-angle-attlist">
+		<optional>
+			<attribute name="style:rotation-angle">
+				<ref name="angle"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="style-list-level-properties">
+		<element name="style:list-level-properties">
+			<ref name="style-list-level-properties-content-strict"/>
+		</element>
+	</define>
+	<define name="style-list-level-properties-content-strict">
+		<ref name="style-list-level-properties-attlist"/>
+		<ref name="style-list-level-properties-elements"/>
+	</define>
+	<define name="style-list-level-properties-attlist">
+		<interleave>
+			<ref name="common-text-align"/>
+			<optional>
+				<attribute name="text:space-before">
+					<ref name="length"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:min-label-width">
+					<ref name="nonNegativeLength"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:min-label-distance">
+					<ref name="nonNegativeLength"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:font-name">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="fo:width">
+					<ref name="positiveLength"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="fo:height">
+					<ref name="positiveLength"/>
+				</attribute>
+			</optional>
+			<ref name="common-vertical-rel-attlist"/>
+			<ref name="common-vertical-pos-attlist"/>
+			<optional>
+				<attribute name="text:list-level-position-and-space-mode">
+					<choice>
+						<value>label-width-and-position</value>
+						<value>label-alignment</value>
+					</choice>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="style-list-level-properties-elements">
+		<ref name="style-list-level-label-alignment"/>
+	</define>
+	<define name="style-list-level-label-alignment">
+		<optional>
+			<element name="style:list-level-label-alignment">
+				<ref name="style-list-level-label-alignment-attlist"/>
+				<empty/>
+			</element>
+		</optional>
+	</define>
+	<define name="style-list-level-label-alignment-attlist">
+		<interleave>
+			<attribute name="text:label-followed-by">
+				<choice>
+					<value>listtab</value>
+					<value>space</value>
+					<value>nothing</value>
+				</choice>
+			</attribute>
+			<optional>
+				<attribute name="text:list-tab-stop-position">
+					<ref name="length"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="fo:text-indent">
+					<ref name="length"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="fo:margin-left">
+					<ref name="length"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="style-graphic-properties-attlist">
+		<interleave>
+			<optional>
+				<attribute name="draw:stroke">
+					<choice>
+						<value>none</value>
+						<value>dash</value>
+						<value>solid</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:stroke-dash">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:stroke-dash-names">
+					<ref name="styleNameRefs"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="svg:stroke-width">
+					<ref name="length"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="svg:stroke-color">
+					<ref name="color"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:marker-start">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:marker-end">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:marker-start-width">
+					<ref name="length"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:marker-end-width">
+					<ref name="length"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:marker-start-center">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:marker-end-center">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="svg:stroke-opacity">
+					<choice>
+						<data type="double">
+							<param name="minInclusive">0</param>
+							<param name="maxInclusive">1</param>
+						</data>
+						<ref name="zeroToHundredPercent"/>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:stroke-linejoin">
+					<choice>
+						<value>miter</value>
+						<value>round</value>
+						<value>bevel</value>
+						<value>middle</value>
+						<value>none</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="svg:stroke-linecap">
+					<choice>
+						<value>butt</value>
+						<value>square</value>
+						<value>round</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:symbol-color">
+					<ref name="color"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:animation">
+					<choice>
+						<value>none</value>
+						<value>scroll</value>
+						<value>alternate</value>
+						<value>slide</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:animation-direction">
+					<choice>
+						<value>left</value>
+						<value>right</value>
+						<value>up</value>
+						<value>down</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:animation-start-inside">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:animation-stop-inside">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:animation-repeat">
+					<ref name="nonNegativeInteger"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:animation-delay">
+					<ref name="duration"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:animation-steps">
+					<ref name="length"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:auto-grow-width">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:auto-grow-height">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:fit-to-size">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:fit-to-contour">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:textarea-vertical-align">
+					<choice>
+						<value>top</value>
+						<value>middle</value>
+						<value>bottom</value>
+						<value>justify</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:textarea-horizontal-align">
+					<choice>
+						<value>left</value>
+						<value>center</value>
+						<value>right</value>
+						<value>justify</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="fo:wrap-option">
+					<choice>
+						<value>no-wrap</value>
+						<value>wrap</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:shrink-to-fit">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:color-mode">
+					<choice>
+						<value>greyscale</value>
+						<value>mono</value>
+						<value>watermark</value>
+						<value>standard</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:color-inversion">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:luminance">
+					<ref name="zeroToHundredPercent"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:contrast">
+					<ref name="percent"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:gamma">
+					<ref name="percent"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:red">
+					<ref name="signedZeroToHundredPercent"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:green">
+					<ref name="signedZeroToHundredPercent"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:blue">
+					<ref name="signedZeroToHundredPercent"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:image-opacity">
+					<ref name="zeroToHundredPercent"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:shadow">
+					<choice>
+						<value>visible</value>
+						<value>hidden</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:shadow-offset-x">
+					<ref name="length"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:shadow-offset-y">
+					<ref name="length"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:shadow-color">
+					<ref name="color"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:shadow-opacity">
+					<ref name="zeroToHundredPercent"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:start-line-spacing-horizontal">
+					<ref name="distance"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:start-line-spacing-vertical">
+					<ref name="distance"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:end-line-spacing-horizontal">
+					<ref name="distance"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:end-line-spacing-vertical">
+					<ref name="distance"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:line-distance">
+					<ref name="distance"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:guide-overhang">
+					<ref name="length"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:guide-distance">
+					<ref name="distance"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:start-guide">
+					<ref name="length"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:end-guide">
+					<ref name="length"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:placing">
+					<choice>
+						<value>below</value>
+						<value>above</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:parallel">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:measure-align">
+					<choice>
+						<value>automatic</value>
+						<value>left-outside</value>
+						<value>inside</value>
+						<value>right-outside</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:measure-vertical-align">
+					<choice>
+						<value>automatic</value>
+						<value>above</value>
+						<value>below</value>
+						<value>center</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:unit">
+					<choice>
+						<value>automatic</value>
+						<value>mm</value>
+						<value>cm</value>
+						<value>m</value>
+						<value>km</value>
+						<value>pt</value>
+						<value>pc</value>
+						<value>inch</value>
+						<value>ft</value>
+						<value>mi</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:show-unit">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:decimal-places">
+					<ref name="nonNegativeInteger"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:caption-type">
+					<choice>
+						<value>straight-line</value>
+						<value>angled-line</value>
+						<value>angled-connector-line</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:caption-angle-type">
+					<choice>
+						<value>fixed</value>
+						<value>free</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:caption-angle">
+					<ref name="angle"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:caption-gap">
+					<ref name="distance"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:caption-escape-direction">
+					<choice>
+						<value>horizontal</value>
+						<value>vertical</value>
+						<value>auto</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:caption-escape">
+					<choice>
+						<ref name="length"/>
+						<ref name="percent"/>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:caption-line-length">
+					<ref name="length"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:caption-fit-line-length">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="dr3d:horizontal-segments">
+					<ref name="nonNegativeInteger"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="dr3d:vertical-segments">
+					<ref name="nonNegativeInteger"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="dr3d:edge-rounding">
+					<ref name="percent"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="dr3d:edge-rounding-mode">
+					<choice>
+						<value>correct</value>
+						<value>attractive</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="dr3d:back-scale">
+					<ref name="percent"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="dr3d:depth">
+					<ref name="length"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="dr3d:backface-culling">
+					<choice>
+						<value>enabled</value>
+						<value>disabled</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="dr3d:end-angle">
+					<ref name="angle"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="dr3d:close-front">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="dr3d:close-back">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="dr3d:lighting-mode">
+					<choice>
+						<value>standard</value>
+						<value>double-sided</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="dr3d:normals-kind">
+					<choice>
+						<value>object</value>
+						<value>flat</value>
+						<value>sphere</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="dr3d:normals-direction">
+					<choice>
+						<value>normal</value>
+						<value>inverse</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="dr3d:texture-generation-mode-x">
+					<choice>
+						<value>object</value>
+						<value>parallel</value>
+						<value>sphere</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="dr3d:texture-generation-mode-y">
+					<choice>
+						<value>object</value>
+						<value>parallel</value>
+						<value>sphere</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="dr3d:texture-kind">
+					<choice>
+						<value>luminance</value>
+						<value>intensity</value>
+						<value>color</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="dr3d:texture-filter">
+					<choice>
+						<value>enabled</value>
+						<value>disabled</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="dr3d:texture-mode">
+					<choice>
+						<value>replace</value>
+						<value>modulate</value>
+						<value>blend</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="dr3d:ambient-color">
+					<ref name="color"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="dr3d:emissive-color">
+					<ref name="color"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="dr3d:specular-color">
+					<ref name="color"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="dr3d:diffuse-color">
+					<ref name="color"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="dr3d:shininess">
+					<ref name="percent"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="dr3d:shadow">
+					<choice>
+						<value>visible</value>
+						<value>hidden</value>
+					</choice>
+				</attribute>
+			</optional>
+			<ref name="common-draw-rel-size-attlist"/>
+			<optional>
+				<attribute name="fo:min-width">
+					<choice>
+						<ref name="length"/>
+						<ref name="percent"/>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="fo:min-height">
+					<choice>
+						<ref name="length"/>
+						<ref name="percent"/>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="fo:max-height">
+					<choice>
+						<ref name="length"/>
+						<ref name="percent"/>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="fo:max-width">
+					<choice>
+						<ref name="length"/>
+						<ref name="percent"/>
+					</choice>
+				</attribute>
+			</optional>
+			<ref name="common-horizontal-margin-attlist"/>
+			<ref name="common-vertical-margin-attlist"/>
+			<ref name="common-margin-attlist"/>
+			<optional>
+				<attribute name="style:print-content">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:protect">
+					<choice>
+						<value>none</value>
+						<list>
+							<oneOrMore>
+								<choice>
+									<value>content</value>
+									<value>position</value>
+									<value>size</value>
+								</choice>
+							</oneOrMore>
+						</list>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:horizontal-pos">
+					<choice>
+						<value>left</value>
+						<value>center</value>
+						<value>right</value>
+						<value>from-left</value>
+						<value>inside</value>
+						<value>outside</value>
+						<value>from-inside</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="svg:x">
+					<ref name="coordinate"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:horizontal-rel">
+					<choice>
+						<value>page</value>
+						<value>page-content</value>
+						<value>page-start-margin</value>
+						<value>page-end-margin</value>
+						<value>frame</value>
+						<value>frame-content</value>
+						<value>frame-start-margin</value>
+						<value>frame-end-margin</value>
+						<value>paragraph</value>
+						<value>paragraph-content</value>
+						<value>paragraph-start-margin</value>
+						<value>paragraph-end-margin</value>
+						<value>char</value>
+					</choice>
+				</attribute>
+			</optional>
+			<ref name="common-vertical-pos-attlist"/>
+			<ref name="common-vertical-rel-attlist"/>
+			<ref name="common-text-anchor-attlist"/>
+			<ref name="common-border-attlist"/>
+			<ref name="common-border-line-width-attlist"/>
+			<ref name="common-padding-attlist"/>
+			<ref name="common-shadow-attlist"/>
+			<ref name="common-background-color-attlist"/>
+			<ref name="common-background-transparency-attlist"/>
+			<ref name="common-editable-attlist"/>
+			<optional>
+				<attribute name="style:wrap">
+					<choice>
+						<value>none</value>
+						<value>left</value>
+						<value>right</value>
+						<value>parallel</value>
+						<value>dynamic</value>
+						<value>run-through</value>
+						<value>biggest</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:wrap-dynamic-threshold">
+					<ref name="nonNegativeLength"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:number-wrapped-paragraphs">
+					<choice>
+						<value>no-limit</value>
+						<ref name="positiveInteger"/>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:wrap-contour">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:wrap-contour-mode">
+					<choice>
+						<value>full</value>
+						<value>outside</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:run-through">
+					<choice>
+						<value>foreground</value>
+						<value>background</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:flow-with-text">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:overflow-behavior">
+					<choice>
+						<value>clip</value>
+						<value>auto-create-new-frame</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:mirror">
+					<choice>
+						<value>none</value>
+						<value>vertical</value>
+						<ref name="horizontal-mirror"/>
+						<list>
+							<value>vertical</value>
+							<ref name="horizontal-mirror"/>
+						</list>
+						<list>
+							<ref name="horizontal-mirror"/>
+							<value>vertical</value>
+						</list>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="fo:clip">
+					<choice>
+						<value>auto</value>
+						<ref name="clipShape"/>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:wrap-influence-on-position">
+					<choice>
+						<value>iterative</value>
+						<value>once-concurrent</value>
+						<value>once-successive</value>
+					</choice>
+				</attribute>
+			</optional>
+			<ref name="common-writing-mode-attlist"/>
+			<optional>
+				<attribute name="draw:frame-display-scrollbar">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:frame-display-border">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:frame-margin-horizontal">
+					<ref name="nonNegativePixelLength"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:frame-margin-vertical">
+					<ref name="nonNegativePixelLength"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:visible-area-left">
+					<ref name="nonNegativeLength"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:visible-area-top">
+					<ref name="nonNegativeLength"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:visible-area-width">
+					<ref name="positiveLength"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:visible-area-height">
+					<ref name="positiveLength"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:draw-aspect">
+					<choice>
+						<value>content</value>
+						<value>thumbnail</value>
+						<value>icon</value>
+						<value>print-view</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:ole-draw-aspect">
+					<ref name="nonNegativeInteger"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="style-graphic-fill-properties-attlist">
+		<interleave>
+			<optional>
+				<attribute name="draw:fill">
+					<choice>
+						<value>none</value>
+						<value>solid</value>
+						<value>bitmap</value>
+						<value>gradient</value>
+						<value>hatch</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:fill-color">
+					<ref name="color"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:secondary-fill-color">
+					<ref name="color"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:fill-gradient-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:gradient-step-count">
+					<ref name="nonNegativeInteger"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:fill-hatch-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:fill-hatch-solid">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:fill-image-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:repeat">
+					<choice>
+						<value>no-repeat</value>
+						<value>repeat</value>
+						<value>stretch</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:fill-image-width">
+					<choice>
+						<ref name="length"/>
+						<ref name="percent"/>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:fill-image-height">
+					<choice>
+						<ref name="length"/>
+						<ref name="percent"/>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:fill-image-ref-point-x">
+					<ref name="percent"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:fill-image-ref-point-y">
+					<ref name="percent"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:fill-image-ref-point">
+					<choice>
+						<value>top-left</value>
+						<value>top</value>
+						<value>top-right</value>
+						<value>left</value>
+						<value>center</value>
+						<value>right</value>
+						<value>bottom-left</value>
+						<value>bottom</value>
+						<value>bottom-right</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:tile-repeat-offset">
+					<list>
+						<ref name="zeroToHundredPercent"/>
+						<choice>
+							<value>horizontal</value>
+							<value>vertical</value>
+						</choice>
+					</list>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:opacity">
+					<ref name="zeroToHundredPercent"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:opacity-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="svg:fill-rule">
+					<choice>
+						<value>nonzero</value>
+						<value>evenodd</value>
+					</choice>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="style-graphic-properties-elements">
+		<interleave>
+			<optional>
+				<ref name="text-list-style"/>
+			</optional>
+			<ref name="style-background-image"/>
+			<ref name="style-columns"/>
+		</interleave>
+	</define>
+	<define name="common-vertical-pos-attlist">
+		<optional>
+			<attribute name="style:vertical-pos">
+				<choice>
+					<value>top</value>
+					<value>middle</value>
+					<value>bottom</value>
+					<value>from-top</value>
+					<value>below</value>
+				</choice>
+			</attribute>
+		</optional>
+		<optional>
+			<attribute name="svg:y">
+				<ref name="coordinate"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-vertical-rel-attlist">
+		<optional>
+			<attribute name="style:vertical-rel">
+				<choice>
+					<value>page</value>
+					<value>page-content</value>
+					<value>frame</value>
+					<value>frame-content</value>
+					<value>paragraph</value>
+					<value>paragraph-content</value>
+					<value>char</value>
+					<value>line</value>
+					<value>baseline</value>
+					<value>text</value>
+				</choice>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-editable-attlist">
+		<optional>
+			<attribute name="style:editable">
+				<ref name="boolean"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="horizontal-mirror">
+		<choice>
+			<value>horizontal</value>
+			<value>horizontal-on-odd</value>
+			<value>horizontal-on-even</value>
+		</choice>
+	</define>
+	<define name="clipShape">
+		<data type="string">
+			<param name="pattern">rect\([ ]*((-?([0-9]+(\.[0-9]*)?|\.[0-9]+)((cm)|(mm)|(in)|(pt)|(pc)))|(auto))([ ]*,[ ]*((-?([0-9]+(\.[0-9]*)?|\.[0-9]+)((cm)|(mm)|(in)|(pt)|(pc))))|(auto)){3}[ ]*\)</param>
+		</data>
+	</define>
+	<define name="nonNegativePixelLength">
+		<data type="string">
+			<param name="pattern">([0-9]+(\.[0-9]*)?|\.[0-9]+)(px)</param>
+		</data>
+	</define>
+	<define name="style-chart-properties">
+		<element name="style:chart-properties">
+			<ref name="style-chart-properties-content-strict"/>
+		</element>
+	</define>
+	<define name="style-chart-properties-content-strict">
+		<ref name="style-chart-properties-attlist"/>
+		<ref name="style-chart-properties-elements"/>
+	</define>
+	<define name="style-chart-properties-elements">
+		<empty/>
+	</define>
+	<define name="style-chart-properties-attlist">
+		<interleave>
+			<optional>
+				<attribute name="chart:scale-text">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:three-dimensional">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:deep">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:right-angled-axes">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<choice>
+				<attribute name="chart:symbol-type">
+					<value>none</value>
+				</attribute>
+				<attribute name="chart:symbol-type">
+					<value>automatic</value>
+				</attribute>
+				<group>
+					<attribute name="chart:symbol-type">
+						<value>named-symbol</value>
+					</attribute>
+					<attribute name="chart:symbol-name">
+						<choice>
+							<value>square</value>
+							<value>diamond</value>
+							<value>arrow-down</value>
+							<value>arrow-up</value>
+							<value>arrow-right</value>
+							<value>arrow-left</value>
+							<value>bow-tie</value>
+							<value>hourglass</value>
+							<value>circle</value>
+							<value>star</value>
+							<value>x</value>
+							<value>plus</value>
+							<value>asterisk</value>
+							<value>horizontal-bar</value>
+							<value>vertical-bar</value>
+						</choice>
+					</attribute>
+				</group>
+				<group>
+					<attribute name="chart:symbol-type">
+						<value>image</value>
+					</attribute>
+					<element name="chart:symbol-image">
+						<attribute name="xlink:href">
+							<ref name="anyIRI"/>
+						</attribute>
+					</element>
+				</group>
+				<empty/>
+			</choice>
+			<optional>
+				<attribute name="chart:symbol-width">
+					<ref name="nonNegativeLength"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:symbol-height">
+					<ref name="nonNegativeLength"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:sort-by-x-values">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:vertical">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:connect-bars">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:gap-width">
+					<ref name="integer"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:overlap">
+					<ref name="integer"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:group-bars-per-axis">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:japanese-candle-stick">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:interpolation">
+					<choice>
+						<value>none</value>
+						<value>cubic-spline</value>
+						<value>b-spline</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:spline-order">
+					<ref name="positiveInteger"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:spline-resolution">
+					<ref name="positiveInteger"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:pie-offset">
+					<ref name="nonNegativeInteger"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:angle-offset">
+					<ref name="angle"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:hole-size">
+					<ref name="percent"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:lines">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:solid-type">
+					<choice>
+						<value>cuboid</value>
+						<value>cylinder</value>
+						<value>cone</value>
+						<value>pyramid</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:stacked">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:percentage">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:treat-empty-cells">
+					<choice>
+						<value>use-zero</value>
+						<value>leave-gap</value>
+						<value>ignore</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:link-data-style-to-source">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:logarithmic">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:maximum">
+					<ref name="double"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:minimum">
+					<ref name="double"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:origin">
+					<ref name="double"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:interval-major">
+					<ref name="double"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:interval-minor-divisor">
+					<ref name="positiveInteger"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:tick-marks-major-inner">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:tick-marks-major-outer">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:tick-marks-minor-inner">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:tick-marks-minor-outer">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:reverse-direction">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:display-label">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:text-overlap">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:line-break">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:label-arrangement">
+					<choice>
+						<value>side-by-side</value>
+						<value>stagger-even</value>
+						<value>stagger-odd</value>
+					</choice>
+				</attribute>
+			</optional>
+			<ref name="common-style-direction-attlist"/>
+			<ref name="common-rotation-angle-attlist"/>
+			<optional>
+				<attribute name="chart:data-label-number">
+					<choice>
+						<value>none</value>
+						<value>value</value>
+						<value>percentage</value>
+						<value>value-and-percentage</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:data-label-text">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:data-label-symbol">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<element name="chart:label-separator">
+					<ref name="text-p"/>
+				</element>
+			</optional>
+			<optional>
+				<attribute name="chart:label-position">
+					<ref name="labelPositions"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:label-position-negative">
+					<ref name="labelPositions"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:visible">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:auto-position">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:auto-size">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:mean-value">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:error-category">
+					<choice>
+						<value>none</value>
+						<value>variance</value>
+						<value>standard-deviation</value>
+						<value>percentage</value>
+						<value>error-margin</value>
+						<value>constant</value>
+						<value>standard-error</value>
+						<value>cell-range</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:error-percentage">
+					<ref name="double"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:error-margin">
+					<ref name="double"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:error-lower-limit">
+					<ref name="double"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:error-upper-limit">
+					<ref name="double"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:error-upper-indicator">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:error-lower-indicator">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:error-lower-range">
+					<ref name="cellRangeAddressList"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:error-upper-range">
+					<ref name="cellRangeAddressList"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:series-source">
+					<choice>
+						<value>columns</value>
+						<value>rows</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:regression-type">
+					<choice>
+						<value>none</value>
+						<value>linear</value>
+						<value>logarithmic</value>
+						<value>exponential</value>
+						<value>power</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:axis-position">
+					<choice>
+						<value>start</value>
+						<value>end</value>
+						<ref name="double"/>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:axis-label-position">
+					<choice>
+						<value>near-axis</value>
+						<value>near-axis-other-side</value>
+						<value>outside-start</value>
+						<value>outside-end</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:tick-mark-position">
+					<choice>
+						<value>at-labels</value>
+						<value>at-axis</value>
+						<value>at-labels-and-axis</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:include-hidden-cells">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="labelPositions">
+		<choice>
+			<value>avoid-overlap</value>
+			<value>center</value>
+			<value>top</value>
+			<value>top-right</value>
+			<value>right</value>
+			<value>bottom-right</value>
+			<value>bottom</value>
+			<value>bottom-left</value>
+			<value>left</value>
+			<value>top-left</value>
+			<value>inside</value>
+			<value>outside</value>
+			<value>near-origin</value>
+		</choice>
+	</define>
+	<define name="style-drawing-page-properties-attlist">
+		<interleave>
+			<optional>
+				<attribute name="presentation:transition-type">
+					<choice>
+						<value>manual</value>
+						<value>automatic</value>
+						<value>semi-automatic</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="presentation:transition-style">
+					<choice>
+						<value>none</value>
+						<value>fade-from-left</value>
+						<value>fade-from-top</value>
+						<value>fade-from-right</value>
+						<value>fade-from-bottom</value>
+						<value>fade-from-upperleft</value>
+						<value>fade-from-upperright</value>
+						<value>fade-from-lowerleft</value>
+						<value>fade-from-lowerright</value>
+						<value>move-from-left</value>
+						<value>move-from-top</value>
+						<value>move-from-right</value>
+						<value>move-from-bottom</value>
+						<value>move-from-upperleft</value>
+						<value>move-from-upperright</value>
+						<value>move-from-lowerleft</value>
+						<value>move-from-lowerright</value>
+						<value>uncover-to-left</value>
+						<value>uncover-to-top</value>
+						<value>uncover-to-right</value>
+						<value>uncover-to-bottom</value>
+						<value>uncover-to-upperleft</value>
+						<value>uncover-to-upperright</value>
+						<value>uncover-to-lowerleft</value>
+						<value>uncover-to-lowerright</value>
+						<value>fade-to-center</value>
+						<value>fade-from-center</value>
+						<value>vertical-stripes</value>
+						<value>horizontal-stripes</value>
+						<value>clockwise</value>
+						<value>counterclockwise</value>
+						<value>open-vertical</value>
+						<value>open-horizontal</value>
+						<value>close-vertical</value>
+						<value>close-horizontal</value>
+						<value>wavyline-from-left</value>
+						<value>wavyline-from-top</value>
+						<value>wavyline-from-right</value>
+						<value>wavyline-from-bottom</value>
+						<value>spiralin-left</value>
+						<value>spiralin-right</value>
+						<value>spiralout-left</value>
+						<value>spiralout-right</value>
+						<value>roll-from-top</value>
+						<value>roll-from-left</value>
+						<value>roll-from-right</value>
+						<value>roll-from-bottom</value>
+						<value>stretch-from-left</value>
+						<value>stretch-from-top</value>
+						<value>stretch-from-right</value>
+						<value>stretch-from-bottom</value>
+						<value>vertical-lines</value>
+						<value>horizontal-lines</value>
+						<value>dissolve</value>
+						<value>random</value>
+						<value>vertical-checkerboard</value>
+						<value>horizontal-checkerboard</value>
+						<value>interlocking-horizontal-left</value>
+						<value>interlocking-horizontal-right</value>
+						<value>interlocking-vertical-top</value>
+						<value>interlocking-vertical-bottom</value>
+						<value>fly-away</value>
+						<value>open</value>
+						<value>close</value>
+						<value>melt</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="presentation:transition-speed">
+					<ref name="presentationSpeeds"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="smil:type">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="smil:subtype">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="smil:direction">
+					<choice>
+						<value>forward</value>
+						<value>reverse</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="smil:fadeColor">
+					<ref name="color"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="presentation:duration">
+					<ref name="duration"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="presentation:visibility">
+					<choice>
+						<value>visible</value>
+						<value>hidden</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:background-size">
+					<choice>
+						<value>full</value>
+						<value>border</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="presentation:background-objects-visible">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="presentation:background-visible">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="presentation:display-header">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="presentation:display-footer">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="presentation:display-page-number">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="presentation:display-date-time">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="style-drawing-page-properties-elements">
+		<optional>
+			<ref name="presentation-sound"/>
+		</optional>
+	</define>
+	<define name="string">
+		<data type="string"/>
+	</define>
+	<define name="date">
+		<data type="date"/>
+	</define>
+	<define name="time">
+		<data type="time"/>
+	</define>
+	<define name="dateTime">
+		<data type="dateTime"/>
+	</define>
+	<define name="duration">
+		<data type="duration"/>
+	</define>
+	<define name="integer">
+		<data type="integer"/>
+	</define>
+	<define name="nonNegativeInteger">
+		<data type="nonNegativeInteger"/>
+	</define>
+	<define name="positiveInteger">
+		<data type="positiveInteger"/>
+	</define>
+	<define name="double">
+		<data type="double"/>
+	</define>
+	<define name="anyURI">
+		<data type="anyURI"/>
+	</define>
+	<define name="base64Binary">
+		<data type="base64Binary"/>
+	</define>
+	<define name="ID">
+		<data type="ID"/>
+	</define>
+	<define name="IDREF">
+		<data type="IDREF"/>
+	</define>
+	<define name="IDREFS">
+		<data type="IDREFS"/>
+	</define>
+	<define name="NCName">
+		<data type="NCName"/>
+	</define>
+	<define name="boolean">
+		<choice>
+			<value>true</value>
+			<value>false</value>
+		</choice>
+	</define>
+	<define name="dateOrDateTime">
+		<choice>
+			<data type="date"/>
+			<data type="dateTime"/>
+		</choice>
+	</define>
+	<define name="timeOrDateTime">
+		<choice>
+			<data type="time"/>
+			<data type="dateTime"/>
+		</choice>
+	</define>
+	<define name="language">
+		<data type="language"/>
+	</define>
+	<define name="countryCode">
+		<data type="token">
+			<param name="pattern">[A-Za-z0-9]{1,8}</param>
+		</data>
+	</define>
+	<define name="languageCode">
+		<data type="token">
+			<param name="pattern">[A-Za-z]{1,8}</param>
+		</data>
+	</define>
+	<define name="scriptCode">
+		<data type="token">
+			<param name="pattern">[A-Za-z0-9]{1,8}</param>
+		</data>
+	</define>
+	<define name="character">
+		<data type="string">
+			<param name="length">1</param>
+		</data>
+	</define>
+	<define name="length">
+		<data type="string">
+			<param name="pattern">-?([0-9]+(\.[0-9]*)?|\.[0-9]+)((cm)|(mm)|(in)|(pt)|(pc)|(px))</param>
+		</data>
+	</define>
+	<define name="nonNegativeLength">
+		<data type="string">
+			<param name="pattern">([0-9]+(\.[0-9]*)?|\.[0-9]+)((cm)|(mm)|(in)|(pt)|(pc)|(px))</param>
+		</data>
+	</define>
+	<define name="positiveLength">
+		<data type="string">
+			<param name="pattern">([0-9]*[1-9][0-9]*(\.[0-9]*)?|0+\.[0-9]*[1-9][0-9]*|\.[0-9]*[1-9][0-9]*)((cm)|(mm)|(in)|(pt)|(pc)|(px))</param>
+		</data>
+	</define>
+	<define name="percent">
+		<data type="string">
+			<param name="pattern">-?([0-9]+(\.[0-9]*)?|\.[0-9]+)%</param>
+		</data>
+	</define>
+	<define name="zeroToHundredPercent">
+		<data type="string">
+			<param name="pattern">([0-9]?[0-9](\.[0-9]*)?|100(\.0*)?|\.[0-9]+)%</param>
+		</data>
+	</define>
+	<define name="signedZeroToHundredPercent">
+		<data type="string">
+			<param name="pattern">-?([0-9]?[0-9](\.[0-9]*)?|100(\.0*)?|\.[0-9]+)%</param>
+		</data>
+	</define>
+	<define name="relativeLength">
+		<data type="string">
+			<param name="pattern">[0-9]+\*</param>
+		</data>
+	</define>
+	<define name="coordinate">
+		<ref name="length"/>
+	</define>
+	<define name="distance">
+		<ref name="length"/>
+	</define>
+	<define name="color">
+		<data type="string">
+			<param name="pattern">#[0-9a-fA-F]{6}</param>
+		</data>
+	</define>
+	<define name="angle">
+		<data type="string"/>
+	</define>
+	<define name="CURIE">
+		<data type="string">
+			<param name="pattern">(([\i-[:]][\c-[:]]*)?:)?.+</param>
+			<param name="minLength">1</param>
+		</data>
+	</define>
+	<define name="CURIEs">
+		<list>
+			<oneOrMore>
+				<ref name="CURIE"/>
+			</oneOrMore>
+		</list>
+	</define>
+	<define name="SafeCURIE">
+		<data type="string">
+			<param name="pattern">\[(([\i-[:]][\c-[:]]*)?:)?.+\]</param>
+			<param name="minLength">3</param>
+		</data>
+	</define>
+	<define name="URIorSafeCURIE">
+		<choice>
+			<ref name="anyURI"/>
+			<ref name="SafeCURIE"/>
+		</choice>
+	</define>
+	<define name="styleName">
+		<data type="NCName"/>
+	</define>
+	<define name="styleNameRef">
+		<choice>
+			<data type="NCName"/>
+			<empty/>
+		</choice>
+	</define>
+	<define name="styleNameRefs">
+		<list>
+			<zeroOrMore>
+				<data type="NCName"/>
+			</zeroOrMore>
+		</list>
+	</define>
+	<define name="variableName">
+		<data type="string"/>
+	</define>
+	<define name="targetFrameName">
+		<choice>
+			<value>_self</value>
+			<value>_blank</value>
+			<value>_parent</value>
+			<value>_top</value>
+			<ref name="string"/>
+		</choice>
+	</define>
+	<define name="valueType">
+		<choice>
+			<value>float</value>
+			<value>time</value>
+			<value>date</value>
+			<value>percentage</value>
+			<value>currency</value>
+			<value>boolean</value>
+			<value>string</value>
+		</choice>
+	</define>
+	<define name="points">
+		<data type="string">
+			<param name="pattern">-?[0-9]+,-?[0-9]+([ ]+-?[0-9]+,-?[0-9]+)*</param>
+		</data>
+	</define>
+	<define name="pathData">
+		<data type="string"/>
+	</define>
+	<define name="vector3D">
+		<data type="string">
+			<param name="pattern">\([ ]*-?([0-9]+(\.[0-9]*)?|\.[0-9]+)([ ]+-?([0-9]+(\.[0-9]*)?|\.[0-9]+)){2}[ ]*\)</param>
+		</data>
+	</define>
+	<define name="namespacedToken">
+		<data type="QName">
+			<param name="pattern">[^:]+:[^:]+</param>
+		</data>
+	</define>
+	<define name="anyIRI">
+		<data type="anyURI"/>
+		<dc:description>An IRI-reference as defined in [RFC3987]. See ODF 1.2 Part 1 section 18.3.</dc:description> 
+	</define>
+	<define name="anyAttListOrElements">
+		<zeroOrMore>
+			<attribute>
+				<anyName/>
+				<text/>
+			</attribute>
+		</zeroOrMore>
+		<ref name="anyElements"/>
+	</define>
+	<define name="anyElements">
+		<zeroOrMore>
+			<element>
+				<anyName/>
+				<mixed>
+					<ref name="anyAttListOrElements"/>
+				</mixed>
+			</element>
+		</zeroOrMore>
+	</define>
+</grammar>
diff --git a/odfdom/pom.xml b/odfdom/pom.xml
index 497ca5f..34869c6 100644
--- a/odfdom/pom.xml
+++ b/odfdom/pom.xml
@@ -136,7 +136,7 @@
 				<groupId>org.apache.maven.plugins</groupId>
 				<artifactId>maven-surefire-plugin</artifactId>
 				<!-- Explizit version required for fix on systemPropertyVariables -->
-				<version>2.6</version>
+				<version>2.15</version>
 				<configuration>
 					<forkMode>pertest</forkMode>
 					<argLine>-Xms512m -Xmx512m</argLine>
diff --git a/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/OdfElement.java b/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/OdfElement.java
index bc1fe26..a299f4d 100644
--- a/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/OdfElement.java
+++ b/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/OdfElement.java
@@ -298,7 +298,7 @@
 	@Override
 	public Node cloneNode(boolean deep) {
 		OdfElement cloneElement = this.cloneOdfElement();
-        
+
 		if (attributes != null) {
 			for (int i = 0; i < attributes.getLength(); i++) {
 				Node item = attributes.item(i);
@@ -306,10 +306,11 @@
 				String prefix = item.getPrefix();
 				if (prefix == null) {
 					qname = item.getLocalName();
+                    cloneElement.setAttribute(qname, item.getNodeValue());
 				} else {
 					qname = prefix + ":" + item.getLocalName();
+                    cloneElement.setAttributeNS(item.getNamespaceURI(), qname, item.getNodeValue());
 				}
-				cloneElement.setAttributeNS(item.getNamespaceURI(), qname, item.getNodeValue());
 			}
 		}
 
diff --git a/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/OdfPackage.java b/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/OdfPackage.java
index 2ed8991..b60fdc7 100644
--- a/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/OdfPackage.java
+++ b/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/OdfPackage.java
@@ -1,4 +1,5 @@
-/************************************************************************

+/**

+ * **********************************************************************

  *

  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER

  *

@@ -18,11 +19,11 @@
  * See the License for the specific language governing permissions and

  * limitations under the License.

  *

- ************************************************************************/

+ ***********************************************************************

+ */

 package org.odftoolkit.odfdom.pkg;

 

 import java.io.BufferedInputStream;

-import java.io.BufferedOutputStream;

 import java.io.ByteArrayInputStream;

 import java.io.ByteArrayOutputStream;

 import java.io.Closeable;

@@ -32,8 +33,6 @@
 import java.io.IOException;

 import java.io.InputStream;

 import java.io.OutputStream;

-import java.io.PipedInputStream;

-import java.io.PipedOutputStream;

 import java.io.UnsupportedEncodingException;

 import java.lang.reflect.Constructor;

 import java.net.URI;

@@ -75,6 +74,7 @@
 import org.apache.xerces.dom.DOMXSImplementationSourceImpl;

 import org.odftoolkit.odfdom.doc.OdfDocument;

 import org.odftoolkit.odfdom.doc.OdfDocument.OdfMediaType;

+import static org.odftoolkit.odfdom.pkg.OdfPackageDocument.ROOT_DOCUMENT_PATH;

 import org.odftoolkit.odfdom.pkg.manifest.AlgorithmElement;

 import org.odftoolkit.odfdom.pkg.manifest.EncryptionDataElement;

 import org.odftoolkit.odfdom.pkg.manifest.FileEntryElement;

@@ -97,10 +97,10 @@
 import org.xml.sax.XMLReader;

 

 /**

- * OdfPackage represents the package view to an OpenDocument document. The

- * OdfPackage will be created from an ODF document and represents a copy of the

- * loaded document, where files can be inserted and deleted. The changes take

- * effect, when the OdfPackage is being made persisted by save().

+ * OdfPackage represents the package view to an OpenDocument document. The OdfPackage will be

+ * created from an ODF document and represents a copy of the loaded document, where files can be

+ * inserted and deleted. The changes take effect, when the OdfPackage is being made persisted by

+ * save().

  */

 public class OdfPackage implements Closeable {

 

@@ -146,22 +146,20 @@
 	public enum OdfFile {

 

 		/**

-		 * The image directory is not defined by the OpenDocument standard,

-		 * nevertheless the most spread ODF application OpenOffice.org is using

-		 * the directory named "Pictures".

+		 * The image directory is not defined by the OpenDocument standard, nevertheless the most

+		 * spread ODF application OpenOffice.org is using the directory named "Pictures".

 		 */

 		IMAGE_DIRECTORY("Pictures"),

 		/**

-		 * The "META-INF/manifest.xml" file is defined by the ODF 1.2 part 3

-		 * Package specification. This manifest is the 'content table' of the

-		 * ODF package and describes the file entries of the ZIP including

-		 * directories, but should not contain empty directories.

+		 * The "META-INF/manifest.xml" file is defined by the ODF 1.2 part 3 Package specification.

+		 * This manifest is the 'content table' of the ODF package and describes the file entries of

+		 * the ZIP including directories, but should not contain empty directories.

 		 */

 		MANIFEST("META-INF/manifest.xml"),

 		/**

-		 * The "mimetype" file is defined by the ODF 1.2 part 3 Package

-		 * specification. It contains the mediatype string of the root document

-		 * and must be the first file in the ZIP and must not be compressed.

+		 * The "mimetype" file is defined by the ODF 1.2 part 3 Package specification. It contains

+		 * the mediatype string of the root document and must be the first file in the ZIP and must

+		 * not be compressed.

 		 */

 		MEDIA_TYPE("mimetype");

 		private final String internalPath;

@@ -177,7 +175,7 @@
 

 	static {

 		mCompressedFileTypes = new HashSet<String>();

-		String[] typelist = new String[] { "jpg", "gif", "png", "zip", "rar", "jpeg", "mpe", "mpg", "mpeg", "mpeg4", "mp4", "7z", "ari", "arj", "jar", "gz", "tar", "war", "mov", "avi" };

+		String[] typelist = new String[]{"jpg", "gif", "png", "zip", "rar", "jpeg", "mpe", "mpg", "mpeg", "mpeg4", "mp4", "7z", "ari", "arj", "jar", "gz", "tar", "war", "mov", "avi"};

 		mCompressedFileTypes.addAll(Arrays.asList(typelist));

 	}

 

@@ -201,8 +199,8 @@
 					Logger.getLogger(OdfPackage.class.getName()).info("Activated validation with default ErrorHandler!");

 				} else {

 					try {

-						Class cl = Class.forName(errorHandlerProperty);

-						Constructor ctor = cl.getDeclaredConstructor(new Class[] {});

+						Class<?> cl = Class.forName(errorHandlerProperty);

+						Constructor<?> ctor = cl.getDeclaredConstructor(new Class[]{});

 						mErrorHandler = (ErrorHandler) ctor.newInstance();

 						Logger.getLogger(OdfPackage.class.getName()).log(Level.CONFIG, "Activated validation with ErrorHandler:''{0}''!", errorHandlerProperty);

 					} catch (Exception ex) {

@@ -215,25 +213,37 @@
 

 	/**

 	 * Creates an OdfPackage from the OpenDocument provided by a File.

+	 *

 	 * <p>

-	 * OdfPackage relies on the file being available for read access over the

-	 * whole lifecycle of OdfPackage.

+	 * OdfPackage relies on the file being available for read access over the whole life-cycle of

+	 * OdfPackage.

 	 * </p>

 	 *

-	 * @param pkgFile

-	 *            - a file representing the ODF document

-	 * @param baseURI

-	 *            defining the base URI of ODF package.

-	 * @param password

-	 *            defining the password of ODF package.

-	 * @param errorHandler

-	 *            - SAX ErrorHandler used for ODF validation

+	 * @param pkgFile - a file representing the ODF document

+	 * @throws SAXException if there's an XML- or validation-related error while loading the package

+	 * @throws IOException if there's an I/O error while loading the package

+	 */

+	private OdfPackage(File pkgFile) throws SAXException, IOException {

+		this(pkgFile, getBaseURLFromFile(pkgFile), null, null);

+	}

+

+	/**

+	 * Creates an OdfPackage from the OpenDocument provided by a File.

+	 * <p>

+	 * OdfPackage relies on the file being available for read access over the whole lifecycle of

+	 * OdfPackage.

+	 * </p>

+	 *

+	 * @param pkgFile - a file representing the ODF document

+	 * @param baseURI defining the base URI of ODF package.

+	 * @param password defining the password of ODF package.

+	 * @param errorHandler - SAX ErrorHandler used for ODF validation

 	 * @see #getErrorHandler

-	 * @throws java.lang.Exception

-	 *             - if the package could not be created

+	 * @throws SAXException if there's an XML- or validation-related error while loading the package

+	 * @throws IOException if there's an I/O error while loading the package

 	 * @see #getErrorHandler*

 	 */

-	private OdfPackage(File pkgFile, String baseURI, String password, ErrorHandler errorHandler) throws Exception {

+	private OdfPackage(File pkgFile, String baseURI, String password, ErrorHandler errorHandler) throws SAXException, IOException {

 		this();

 		mBaseURI = getBaseURLFromFile(pkgFile);

 		mErrorHandler = errorHandler;

@@ -247,32 +257,26 @@
 		} finally {

 			close(packageStream);

 		}

-

-		// initializeZip(pkgFile);

 	}

 

 	/**

 	 * Creates an OdfPackage from the OpenDocument provided by a InputStream.

 	 * <p>

-	 * Since an InputStream does not provide the arbitrary (non sequentiell)

-	 * read access needed by OdfPackage, the InputStream is cached. This usually

-	 * takes more time compared to the other constructors.

+	 * Since an InputStream does not provide the arbitrary (non sequential) read access needed by

+	 * OdfPackage, the InputStream is cached. This usually takes more time compared to the other

+	 * constructors.

 	 * </p>

 	 *

-	 * @param packageStream

-	 *            - an inputStream representing the ODF package

-	 * @param baseURI

-	 *            defining the base URI of ODF package.

-	 * @param password

-	 *            defining the password of ODF package.

-	 * @param errorHandler

-	 *            - SAX ErrorHandler used for ODF validation

+	 * @param packageStream - an inputStream representing the ODF package

+	 * @param baseURI defining the base URI of ODF package.

+	 * @param password defining the password of ODF package.

+	 * @param errorHandler - SAX ErrorHandler used for ODF validation

 	 * @see #getErrorHandler

-	 * @throws java.lang.Exception

-	 *             - if the package could not be created

+	 * @throws IOException if there's an I/O error while loading the package

+	 * @throws SAXException if there's an XML- or validation-related error while loading the package

 	 * @see #getErrorHandler*

 	 */

-	private OdfPackage(InputStream packageStream, String baseURI, String password, ErrorHandler errorHandler) throws Exception {

+	private OdfPackage(InputStream packageStream, String baseURI, String password, ErrorHandler errorHandler) throws SAXException, IOException {

 		this(); // calling private constructor

 		mErrorHandler = errorHandler;

 		mBaseURI = baseURI;

@@ -284,125 +288,111 @@
 	/**

 	 * Loads an OdfPackage from the given documentURL.

 	 * <p>

-	 * OdfPackage relies on the file being available for read access over the

-	 * whole lifecycle of OdfPackage.

+	 * OdfPackage relies on the file being available for read access over the whole lifecycle of

+	 * OdfPackage.

 	 * </p>

 	 *

-	 * @param path

-	 *            - the documentURL to the ODF package

+	 * @param path - the documentURL to the ODF package

 	 * @return the OpenDocument document represented as an OdfPackage

-	 * @throws java.lang.Exception

-	 *             - if the package could not be loaded

+	 * @throws SAXException if there's an XML- or validation-related error while loading the package

+	 * @throws IOException if there's an I/O error while loading the package

 	 */

-	public static OdfPackage loadPackage(String path) throws Exception {

+	public static OdfPackage loadPackage(String path) throws SAXException, IOException {

 		File pkgFile = new File(path);

-		return new OdfPackage(pkgFile, getBaseURLFromFile(pkgFile), null, null);

+		return new OdfPackage(pkgFile);

 	}

 

 	/**

 	 * Loads an OdfPackage from the OpenDocument provided by a File.

 	 * <p>

-	 * OdfPackage relies on the file being available for read access over the

-	 * whole lifecycle of OdfPackage.

+	 * OdfPackage relies on the file being available for read access over the whole lifecycle of

+	 * OdfPackage.

 	 * </p>

 	 *

-	 * @param pkgFile

-	 *            - the ODF Package

+	 * @param pkgFile - the ODF Package

 	 * @return the OpenDocument document represented as an OdfPackage

-	 * @throws java.lang.Exception

-	 *             - if the package could not be loaded

+	 * @throws SAXException if there's an XML- or validation-related error while loading the package

+	 * @throws IOException if there's an I/O error while loading the package

 	 */

-	public static OdfPackage loadPackage(File pkgFile) throws Exception {

+	public static OdfPackage loadPackage(File pkgFile) throws SAXException, IOException {

 		return new OdfPackage(pkgFile, getBaseURLFromFile(pkgFile), null, null);

 	}

 

 	/**

 	 * Creates an OdfPackage from the given InputStream.

 	 * <p>

-	 * Since an InputStream does not provide the arbitrary (non sequentiell)

-	 * read access needed by OdfPackage, the InputStream is cached. This usually

-	 * takes more time compared to the other loadPackage methods.

+	 * Since an InputStream does not provide the arbitrary (non sequential) read access needed by

+	 * OdfPackage, the InputStream is cached. This usually takes more time compared to the other

+	 * loadPackage methods.

 	 * </p>

 	 *

-	 * @param packageStream

-	 *            - an inputStream representing the ODF package

+	 * @param packageStream - an inputStream representing the ODF package

 	 * @return the OpenDocument document represented as an OdfPackage

-	 * @throws java.lang.Exception

-	 *             - if the package could not be loaded

+	 * @throws SAXException if there's an XML- or validation-related error while loading the package

+	 * @throws IOException if there's an I/O error while loading the package

 	 */

-	public static OdfPackage loadPackage(InputStream packageStream) throws Exception {

+	public static OdfPackage loadPackage(InputStream packageStream) throws SAXException, IOException {

 		return new OdfPackage(packageStream, null, null, null);

 	}

 

 	/**

 	 * Creates an OdfPackage from the given InputStream.

 	 * <p>

-	 * OdfPackage relies on the file being available for read access over the

-	 * whole lifecycle of OdfPackage.

+	 * OdfPackage relies on the file being available for read access over the whole lifecycle of

+	 * OdfPackage.

 	 * </p>

 	 *

-	 * @param packageStream

-	 *            - an inputStream representing the ODF package

-	 * @param baseURI

-	 *            allows to explicitly set the base URI from the document, As

-	 *            the URL can not be derived from a stream. In addition it is

-	 *            possible to set the baseURI to any arbitrary URI, e.g. an URN.

-	 *            One usage of the baseURI to describe the source of validation

-	 *            exception thrown by the ErrorHandler.

-	 * @param errorHandler

-	 *            - SAX ErrorHandler used for ODF validation

-	 * @throws java.lang.Exception

-	 *             - if the package could not be created

+	 * @param packageStream - an inputStream representing the ODF package

+	 * @param baseURI allows to explicitly set the base URI from the document, As the URL can not be

+	 * derived from a stream. In addition it is possible to set the baseURI to any arbitrary URI,

+	 * e.g. an URN. One usage of the baseURI to describe the source of validation exception thrown

+	 * by the ErrorHandler.

+	 * @param errorHandler - SAX ErrorHandler used for ODF validation

+	 * @throws SAXException if there's an XML- or validation-related error while loading the package

+	 * @throws IOException if there's an I/O error while loading the package

 	 * @see #getErrorHandler

 	 */

-	public static OdfPackage loadPackage(InputStream packageStream, String baseURI, ErrorHandler errorHandler) throws Exception {

+	public static OdfPackage loadPackage(InputStream packageStream, String baseURI, ErrorHandler errorHandler) throws SAXException, IOException {

 		return new OdfPackage(packageStream, baseURI, null, errorHandler);

 	}

 

 	/**

 	 * Loads an OdfPackage from the given File.

 	 * <p>

-	 * OdfPackage relies on the file being available for read access over the

-	 * whole lifecycle of OdfPackage.

+	 * OdfPackage relies on the file being available for read access over the whole lifecycle of

+	 * OdfPackage.

 	 * </p>

 	 *

-	 * @param pkgFile

-	 *            - the ODF Package. A baseURL is being generated based on its

-	 *            location.

-	 * @param errorHandler

-	 *            - SAX ErrorHandler used for ODF validation.

-	 * @throws java.lang.Exception

-	 *             - if the package could not be created

+	 * @param pkgFile - the ODF Package. A baseURL is being generated based on its location.

+	 * @param errorHandler - SAX ErrorHandler used for ODF validation.

+	 * @throws SAXException if there's an XML- or validation-related error while loading the package

+	 * @throws IOException if there's an I/O error while loading the package

 	 * @see #getErrorHandler

 	 */

-	public static OdfPackage loadPackage(File pkgFile, ErrorHandler errorHandler) throws Exception {

+	public static OdfPackage loadPackage(File pkgFile, ErrorHandler errorHandler) throws SAXException, IOException {

 		return new OdfPackage(pkgFile, getBaseURLFromFile(pkgFile), null, errorHandler);

 	}

 

 	/**

 	 * Loads an OdfPackage from the given File.

 	 * <p>

-	 * OdfPackage relies on the file being available for read access over the

-	 * whole lifecycle of OdfPackage.

+	 * OdfPackage relies on the file being available for read access over the whole lifecycle of

+	 * OdfPackage.

 	 * </p>

 	 *

-	 * @param pkgFile

-	 *            - the ODF Package. A baseURL is being generated based on its

-	 *            location.

-	 * @param password

-	 *            - the ODF Package password.

-	 * @param errorHandler

-	 *            - SAX ErrorHandler used for ODF validation.

-	 * @throws java.lang.Exception

-	 *             - if the package could not be created

+	 * @param pkgFile - the ODF Package. A baseURL is being generated based on its location.

+	 * @param password - the ODF Package password.

+	 * @param errorHandler - SAX ErrorHandler used for ODF validation.

+	 * @throws SAXException if there's an XML- or validation-related error while loading the package

+	 * @throws IOException if there's an I/O error while loading the package

 	 * @see #getErrorHandler

 	 */

-	public static OdfPackage loadPackage(File pkgFile, String password, ErrorHandler errorHandler) throws Exception {

+	public static OdfPackage loadPackage(File pkgFile, String password, ErrorHandler errorHandler) throws SAXException, IOException {

 		return new OdfPackage(pkgFile, getBaseURLFromFile(pkgFile), password, errorHandler);

 	}

 

 	// Initialize using memory

-	private void initializeZip(InputStream odfStream) throws Exception {

+	private void initializeZip(InputStream odfStream) throws SAXException, IOException {

 		ByteArrayOutputStream tempBuf = new ByteArrayOutputStream();

 		StreamHelper.transformStream(odfStream, tempBuf);

 		byte[] mTempByteBuf = tempBuf.toByteArray();

@@ -433,8 +423,7 @@
 	// }

 	// readZip();

 	// }

-

-	private void readZip() throws Exception {

+	private void readZip() throws SAXException, IOException {

 		mZipEntries = new HashMap<String, ZipEntry>();

 		String firstEntryName = mZipFile.entriesToMap(mZipEntries);

 		if (mZipEntries.isEmpty()) {

@@ -482,16 +471,16 @@
 	 * @throws SAXException

 	 */

 	private void validateManifest() throws SAXException {

-		Set zipPaths = mZipEntries.keySet();

-		Set manifestPaths = mManifestEntries.keySet();

+		Set<String> zipPaths = mZipEntries.keySet();

+		Set<String> manifestPaths = mManifestEntries.keySet();

 		Set<String> sharedPaths = new HashSet<String>(zipPaths);

 		sharedPaths.retainAll(manifestPaths);

 

 		if (sharedPaths.size() < zipPaths.size()) {

 			Set<String> zipPathSuperset = new HashSet<String>(mZipEntries.keySet());

 			zipPathSuperset.removeAll(sharedPaths);

-			Set sortedSet = new TreeSet<String>(zipPathSuperset);

-			Iterator iter = sortedSet.iterator();

+			Set<String> sortedSet = new TreeSet<String>(zipPathSuperset);

+			Iterator<String> iter = sortedSet.iterator();

 			String documentURL = getBaseURI();

 			String internalPath;

 			while (iter.hasNext()) {

@@ -518,7 +507,11 @@
 				} else {

 					// if it is a nonexistent file

 					logValidationError(OdfPackageConstraint.MANIFEST_LISTS_NONEXISTENT_FILE, getBaseURI(), manifestOnlyPath);

-					mManifestEntries.remove(manifestOnlyPath);

+					// remove from the manifest Map

+					OdfFileEntry manifestEntry = mManifestEntries.remove(manifestOnlyPath);

+					// remove from the manifest DOM

+					FileEntryElement manifestEle = manifestEntry.getOdfElement();

+					manifestEle.getParentNode().removeChild(manifestEle);

 				}

 			}

 		}

@@ -545,7 +538,9 @@
 			String dirMimeType = mManifestEntries.get(path).getMediaTypeString();

 			if (dirMimeType == null || EMPTY_STRING.equals(dirMimeType)) {

 				logValidationWarning(OdfPackageConstraint.MANIFEST_LISTS_DIRECTORY, getBaseURI(), path);

+				// remove from the manifest Map

 				OdfFileEntry manifestEntry = mManifestEntries.remove(path);

+				// remove from the manifest DOM

 				FileEntryElement manifestEle = manifestEntry.getOdfElement();

 				manifestEle.getParentNode().removeChild(manifestEle);

 			}

@@ -553,8 +548,7 @@
 	}

 

 	/**

-	 * Reads the uncompressed "mimetype" file, which contains the package

-	 * media/mimte type

+	 * Reads the uncompressed "mimetype" file, which contains the package media/mimte type

 	 *

 	 * @throws SAXException

 	 */

@@ -585,14 +579,15 @@
 							logValidationError(OdfPackageConstraint.MIMETYPE_DIFFERS_FROM_PACKAGE, getBaseURI(), CONTROL_CHAR_PATTERN.matcher(mMediaType).replaceAll(EMPTY_STRING), manifestMediaType);

 						}

 					} else { // if "mimetype" file exists, there have to be a

-								// mimetype in the manifest.xml for the root

-								// document (see ODF 1.2 part 3)

+						// mimetype in the manifest.xml for the root

+						// document (see ODF 1.2 part 3)

 						logValidationError(OdfPackageConstraint.MIMETYPE_WITHOUT_MANIFEST_MEDIATYPE, getBaseURI(), CONTROL_CHAR_PATTERN.matcher(mMediaType).replaceAll(EMPTY_STRING), manifestMediaType);

 					}

 				}

-			} else { // if there is no media-type was set by the "mimetype" file

-				// try as fall-back the mediatype of the root document from the

-				// manifest.xml

+			} else // if there is no media-type was set by the "mimetype" file

+			// try as fall-back the mediatype of the root document from the

+			// manifest.xml

+			{

 				if (manifestMediaType != null && !manifestMediaType.equals(EMPTY_STRING)) {

 					// and used as fall-back for the mediatype of the package

 					mMediaType = manifestMediaType;

@@ -624,7 +619,9 @@
 		}

 	}

 

-	/** @returns the media type of the root document from the manifest.xml */

+	/**

+	 * @returns the media type of the root document from the manifest.xml

+	 */

 	private String getMediaTypeFromManifest() {

 		OdfFileEntry rootDocumentEntry = mManifestEntries.get(SLASH);

 		if (rootDocumentEntry != null) {

@@ -634,7 +631,9 @@
 		}

 	}

 

-	/** @returns the media type of the root document from the manifest.xml */

+	/**

+	 * @returns the media type of the root document from the manifest.xml

+	 */

 	private String getMediaTypeFromEntry(ZipEntry mimetypeEntry) {

 		String entryMediaType = null;

 		ByteArrayOutputStream out = new ByteArrayOutputStream();

@@ -657,38 +656,33 @@
 	}

 

 	/**

-	 * Insert an Odf document into the package at the given path. The path has

-	 * to be a directory and will receive the MIME type of the

-	 * OdfPackageDocument.

+	 * Insert an Odf document into the package at the given path. The path has to be a directory and

+	 * will receive the MIME type of the OdfPackageDocument.

 	 *

-	 * @param doc

-	 *            the OdfPackageDocument to be inserted.

-	 * @param internalPath

-	 *            path relative to the package root, where the document should

-	 *            be inserted.

+	 * @param doc the OdfPackageDocument to be inserted.

+	 * @param internalPath path relative to the package root, where the document should be inserted.

 	 */

 	void cacheDocument(OdfPackageDocument doc, String internalPath) {

-		internalPath = normalizeDirectoryPath(internalPath);

-		updateFileEntry(ensureFileEntryExistence(internalPath), doc.getMediaTypeString());

-		mPkgDocuments.put(internalPath, doc);

+		if (!internalPath.isEmpty()) {

+			internalPath = normalizeDirectoryPath(internalPath);

+			updateFileEntry(ensureFileEntryExistence(internalPath), doc.getMediaTypeString());

+			mPkgDocuments.put(internalPath, doc);

+		}

 	}

 

 	/**

-	 * Set the baseURI for this ODF package. NOTE: Should only be set during

-	 * saving the package.

+	 * Set the baseURI for this ODF package. NOTE: Should only be set during saving the package.

 	 *

-	 * @param baseURI

-	 *            defining the location of the package

+	 * @param baseURI defining the location of the package

 	 */

 	void setBaseURI(String baseURI) {

 		mBaseURI = baseURI;

 	}

 

 	/**

-	 * @return The URI to the ODF package, usually the URL, where this ODF

-	 *         package is located. If the package has not URI NULL is returned.

-	 *         This is the case if the package was new created without an URI

-	 *         and not saved before.

+	 * @return The URI to the ODF package, usually the URL, where this ODF package is located. If

+	 * the package has not URI NULL is returned. This is the case if the package was new created

+	 * without an URI and not saved before.

 	 */

 	public String getBaseURI() {

 		return mBaseURI;

@@ -697,11 +691,9 @@
 	/**

 	 * Returns on ODF documents based a given mediatype.

 	 *

-	 * @param internalPath

-	 *            path relative to the package root, where the document should

-	 *            be inserted.

-	 * @return The ODF document, which mediatype dependends on the parameter or

-	 *         NULL if media type were not supported.

+	 * @param internalPath path relative to the package root, where the document should be loaded.

+	 * @return The ODF document, which mediatype depends on the parameter or NULL if media type were

+	 * not supported.

 	 */

 	public OdfPackageDocument loadDocument(String internalPath) {

 		OdfPackageDocument doc = getCachedDocument(internalPath);

@@ -730,12 +722,10 @@
 	}

 

 	/**

-	 * @deprecated This method is only added temporary as workaround for the IBM

-	 *             fork using different DOC classes. Until the registering of

-	 *             DOC documents to the PKG layer has been finished.

-	 * @param internalPath

-	 *            path relative to the package root, where the document should

-	 *            be inserted.

+	 * @deprecated This method is only added temporary as workaround for the IBM fork using

+	 * different DOC classes. Until the registering of DOC documents to the PKG layer has been

+	 * finished.

+	 * @param internalPath path relative to the package root, where the document should be inserted.

 	 * @return an already open OdfPackageDocument via its path, otherwise NULL.

 	 */

 	@Deprecated

@@ -745,12 +735,8 @@
 	}

 

 	/**

-	 * @param dom

-	 *            the DOM tree that has been parsed and should be added to the

-	 *            cache.

-	 * @param internalPath

-	 *            path relative to the package root, where the XML of the DOM is

-	 *            located.

+	 * @param dom the DOM tree that has been parsed and should be added to the cache.

+	 * @param internalPath path relative to the package root, where the XML of the DOM is located.

 	 * @return an already open OdfPackageDocument via its path, otherwise NULL.

 	 */

 	void cacheDom(Document dom, String internalPath) {

@@ -759,9 +745,7 @@
 	}

 

 	/**

-	 * @param internalPath

-	 *            path relative to the package root, where the document should

-	 *            be inserted.

+	 * @param internalPath path relative to the package root, where the document should be inserted.

 	 * @return an already open W3C XML Documenet via its path, otherwise NULL.

 	 */

 	Document getCachedDom(String internalPath) {

@@ -770,58 +754,52 @@
 	}

 

 	/**

-	 * @return a map with all open W3C XML documents with their internal package

-	 *         path as key.

+	 * @return a map with all open W3C XML documents with their internal package path as key.

 	 */

 	Map<String, Document> getCachedDoms() {

 		return this.mPkgDoms;

 	}

 

 	/**

-	 * Removes a document from the package via its path. Independent if it was

-	 * already opened or not.

+	 * Removes a document from the package via its path. Independent if it was already opened or

+	 * not.

 	 *

-	 * @param internalPath

-	 *            path relative to the package root, where the document should

-	 *            be removed.

+	 * @param internalPath path relative to the package root, where the document should be removed.

 	 */

 	public void removeDocument(String internalPath) {

-		// Note: the EMPTY String for rrot path will be exchanged to a SLASH

+		// Note: the EMPTY String for root path will be exchanged to a SLASH

 		internalPath = normalizeDirectoryPath(internalPath);

-		try {

-			// get all files of the package

-			Set<String> allPackageFileNames = getFilePaths();

+		// get all files of the package

+		Set<String> allPackageFileNames = getFilePaths();

 

-			// If the document is the root document

-			// the "/" representing the root document is outside the

-			// manifest.xml in the API an empty path

-			// still normalizeDirectoryPath() already exchanged the EMPTY_STRING

-			// to SLASH

-			if (internalPath.equals(SLASH)) {

-				for (String entryName : allPackageFileNames) {

-					remove(entryName);

-				}

-				remove(SLASH);

-			} else {

-				// remove all the stream of the directory, such as pictures

-				List<String> directoryEntryNames = new ArrayList<String>();

-				for (String entryName : allPackageFileNames) {

-					if (entryName.startsWith(internalPath)) {

-						directoryEntryNames.add(entryName);

-					}

-				}

-				for (String entryName : directoryEntryNames) {

-					remove(entryName);

-				}

-				remove(internalPath);

+		// If the document is the root document

+		// the "/" representing the root document is outside the

+		// manifest.xml in the API an empty path

+		// still normalizeDirectoryPath() already exchanged the EMPTY_STRING

+		// to SLASH

+		if (internalPath.equals(SLASH)) {

+			for (String entryName : allPackageFileNames) {

+				remove(entryName);

 			}

-		} catch (Exception ex) {

-			Logger.getLogger(OdfPackageDocument.class.getName()).log(Level.SEVERE, null, ex);

+			remove(SLASH);

+		} else {

+			// remove all the stream of the directory, such as pictures

+			List<String> directoryEntryNames = new ArrayList<String>();

+			for (String entryName : allPackageFileNames) {

+				if (entryName.startsWith(internalPath)) {

+					directoryEntryNames.add(entryName);

+				}

+			}

+			for (String entryName : directoryEntryNames) {

+				remove(entryName);

+			}

+			remove(internalPath);

 		}

-

 	}

 

-	/** @return all currently opened OdfPackageDocument of this OdfPackage */

+	/**

+	 * @return all currently opened OdfPackageDocument of this OdfPackage

+	 */

 	Set<String> getCachedPackageDocuments() {

 		return mPkgDocuments.keySet();

 	}

@@ -835,13 +813,11 @@
 	}

 

 	/**

-	 * Get the media type of the ODF file or document (ie. a directory). A

-	 * directory with a mediatype can be loaded as

-	 * <code>OdfPackageDocument</code>. Note: A directoy is represented by in

-	 * the package as directory with media type

+	 * Get the media type of the ODF file or document (ie. a directory). A directory with a

+	 * mediatype can be loaded as <code>OdfPackageDocument</code>. Note: A directoy is represented

+	 * by in the package as directory with media type

 	 *

-	 * @param internalPath

-	 *            within the package of the file or document.

+	 * @param internalPath within the package of the file or document.

 	 * @return the mediaType for the resource of the given path

 	 */

 	public String getMediaTypeString(String internalPath) {

@@ -871,8 +847,7 @@
 	}

 

 	/**

-	 * Get the media type of the ODF package (equal to media type of ODF root

-	 * document)

+	 * Get the media type of the ODF package (equal to media type of ODF root document)

 	 *

 	 * @return the mediaType string of this ODF package

 	 */

@@ -881,22 +856,19 @@
 	}

 

 	/**

-	 * Set the media type of the ODF package (equal to media type of ODF root

-	 * document)

+	 * Set the media type of the ODF package (equal to media type of ODF root document)

 	 *

-	 * @param mediaType

-	 *            string of this ODF package

+	 * @param mediaType string of this ODF package

 	 */

 	void setMediaTypeString(String mediaType) {

 		mMediaType = mediaType;

 	}

 

 	/**

-	 * Get an OdfFileEntry for the internalPath NOTE: This method should be

-	 * better moved to a DOM inherited Manifest class

+	 * Get an OdfFileEntry for the internalPath NOTE: This method should be better moved to a DOM

+	 * inherited Manifest class

 	 *

-	 * @param internalPath

-	 *            The relative package path within the ODF package

+	 * @param internalPath The relative package path within the ODF package

 	 * @return The manifest file entry will be returned.

 	 */

 	public OdfFileEntry getFileEntry(String internalPath) {

@@ -916,8 +888,7 @@
 	/**

 	 * Check existence of a file in the package.

 	 *

-	 * @param internalPath

-	 *            The relative package documentURL within the ODF package

+	 * @param internalPath The relative package documentURL within the ODF package

 	 * @return True if there is an entry and a file for the given documentURL

 	 */

 	public boolean contains(String internalPath) {

@@ -928,26 +899,22 @@
 	/**

 	 * Save the package to given documentURL.

 	 *

-	 * @param odfPath

-	 *            - the path to the ODF package destination

-	 * @throws java.lang.Exception

-	 *             - if the package could not be saved

+	 * @param odfPath - the path to the ODF package destination

+	 * @throws java.io.IOException - if the package could not be saved

 	 */

-	public void save(String odfPath) throws Exception {

+	public void save(String odfPath) throws IOException {

 		File f = new File(odfPath);

 		save(f);

 	}

 

 	/**

-	 * Save package to a given File. After saving it is still necessary to close

-	 * the package to have again full access about the file.

+	 * Save package to a given File. After saving it is still necessary to close the package to have

+	 * again full access about the file.

 	 *

-	 * @param pkgFile

-	 *            - the File to save the ODF package to

-	 * @throws java.lang.Exception

-	 *             - if the package could not be saved

+	 * @param pkgFile - the File to save the ODF package to

+	 * @throws java.io.IOException - if the package could not be saved

 	 */

-	public void save(File pkgFile) throws Exception {

+	public void save(File pkgFile) throws IOException {

 		String baseURL = getBaseURLFromFile(pkgFile);

 		// if (baseURL.equals(mBaseURI)) {

 		// // save to the same file: cache everything first

@@ -957,7 +924,11 @@
 		// cacheContent();

 		// }

 		FileOutputStream fos = new FileOutputStream(pkgFile);

-		save(fos, baseURL);

+		try {

+			save(fos, baseURL);

+		} finally {

+			fos.close();

+		}

 	}

 

 	public void save(OutputStream odfStream) throws Exception {

@@ -965,11 +936,10 @@
 	}

 

 	/**

-	 * Sets the password of this package. if password is not null, package will

-	 * be encrypted when save.

+	 * Sets the password of this package. if password is not null, package will be encrypted when

+	 * save.

 	 *

-	 * @param password

-	 *            password

+	 * @param password password

 	 * @since 0.8.9

 	 */

 	public void setPassword(String password) {

@@ -979,15 +949,11 @@
 	/**

 	 * Save an ODF document to the OutputStream.

 	 *

-	 * @param odfStream

-	 *            - the OutputStream to insert content to

-	 * @param baseURL

-	 *            defining the location of the package

-	 * @throws java.lang.Exception

-	 *             - if the package could not be saved

+	 * @param odfStream - the OutputStream to insert content to

+	 * @param baseURL defining the location of the package

+	 * @throws java.io.IOException if an I/O error occurs while saving the package

 	 */

-	private void save(OutputStream odfStream, String baseURL) throws Exception {

-		// try {

+	private void save(OutputStream odfStream, String baseURL) throws IOException {

 		mBaseURI = baseURL;

 		OdfFileEntry rootEntry = mManifestEntries.get(SLASH);

 		if (rootEntry == null) {

@@ -1007,9 +973,7 @@
 			long modTime = (new java.util.Date()).getTime();

 			byte[] data = null;

 			while (it.hasNext() || isFirstFile) {

-				// try {

-				// ODF requires the "mimetype" file to be at first in the

-				// package

+				// ODF requires the "mimetype" file to be at first in the package

 				if (isFirstFile) {

 					isFirstFile = false;

 					// create "mimetype" from current attribute value

@@ -1017,9 +981,9 @@
 					createZipEntry(OdfFile.MEDIA_TYPE.getPath(), data, zos, modTime, crc);

 				} else {

 					path = it.next();

-					// not interested to reuse previous mediaType nor

-					// manifest from ZIP

-					if (!path.endsWith(SLASH) && !path.equals(OdfPackage.OdfFile.MANIFEST.getPath()) && !path.equals(OdfPackage.OdfFile.MEDIA_TYPE.getPath())) {

+					// not interested to reuse previous mediaType nor manifest from ZIP

+					if (!path.endsWith(SLASH) && !path.equals(OdfPackage.OdfFile.MANIFEST.getPath())

+						&& !path.equals(OdfPackage.OdfFile.MEDIA_TYPE.getPath())) {

 						data = getBytes(path);

 						createZipEntry(path, data, zos, modTime, crc);

 					}

@@ -1032,22 +996,18 @@
 			}

 			// Create "META-INF/" directory

 			createZipEntry("META-INF/", null, zos, modTime, crc);

-			// Create "META-INF/manifest.xml" file

+			// Create "META-INF/manifest.xml" file after all entries with potential encryption have been added

 			data = getBytes(OdfFile.MANIFEST.getPath());

 			createZipEntry(OdfFile.MANIFEST.getPath(), data, zos, modTime, crc);

 		} finally {

-            zos.flush();

+			zos.flush();

 			zos.close();

 		}

-		// } catch (IOException ex) {

-		// Logger.getLogger(OdfPackage.class.getName()).log(Level.SEVERE, null,

-		// ex);

-		// }

+		odfStream.flush();

 	}

 

 	private void createZipEntry(String path, byte[] data, ZipOutputStream zos, long modTime, CRC32 crc) throws IOException {

 		ZipEntry ze = null;

-		// try {

 		ze = mZipEntries.get(path);

 		if (ze == null) {

 			ze = new ZipEntry(path);

@@ -1095,17 +1055,12 @@
 		}

 		zos.closeEntry();

 		mZipEntries.put(path, ze);

-		// } catch (IOException ex) {

-		// Logger.getLogger(OdfPackage.class.getName()).log(Level.SEVERE, null,

-		// ex);

-		// }

 	}

 

 	/**

 	 * Determines if a file have to be encrypted.

 	 *

-	 * @param internalPath

-	 *            the file location

+	 * @param internalPath the file location

 	 * @return true if the file needs encrypted, false, otherwise

 	 */

 	private boolean fileNeedsEncryption(String internalPath) {

@@ -1123,8 +1078,7 @@
 	/**

 	 * Determines if a file have to be compressed.

 	 *

-	 * @param internalPath

-	 *            the file location

+	 * @param internalPath the file location

 	 * @return true if the file needs compression, false, otherwise

 	 */

 	private boolean fileNeedsCompression(String internalPath) {

@@ -1179,11 +1133,10 @@
 	}

 

 	/**

-	 * Close the OdfPackage after it is no longer needed. Even after saving it

-	 * is still necessary to close the package to have again full access about

-	 * the file. Closing the OdfPackage will release all temporary created data.

-	 * Do this as the last action to free resources. Closing an already closed

-	 * document has no effect.

+	 * Close the OdfPackage after it is no longer needed. Even after saving it is still necessary to

+	 * close the package to have again full access about the file. Closing the OdfPackage will

+	 * release all temporary created data. Do this as the last action to free resources. Closing an

+	 * already closed document has no effect.

 	 */

 	public void close() {

 		if (mZipFile != null) {

@@ -1208,10 +1161,7 @@
 	/**

 	 * Parse the Manifest file

 	 */

-	private void parseManifest() throws Exception {

-		// ToDo: manifest.xml will be held in the future as DOM, now its

-		// being generated for each save()

-		// try {

+	private void parseManifest() throws SAXException, IOException {

 		mManifestDom = (OdfManifestDom) OdfFileDom.newFileDom(this, OdfFile.MANIFEST.getPath());

 		ManifestElement manifestEle = mManifestDom.getRootElement();

 		if (manifestEle != null) {

@@ -1227,23 +1177,20 @@
 				if (getErrorHandler() != null) {

 					logValidationError(OdfPackageConstraint.MANIFEST_WITH_EMPTY_PATH, getBaseURI());

 				}

-			}

-			path = normalizePath(path);

-			OdfFileEntry currentFileEntry = entries.get(path);

-			if (currentFileEntry == null) {

-				currentFileEntry = new OdfFileEntry(fileEntryEle);

-			}

-			if (path != null) {

-				entries.put(path, currentFileEntry);

+			} else {

+				path = normalizePath(path);

+				OdfFileEntry currentFileEntry = entries.get(path);

+				if (currentFileEntry == null) {

+					currentFileEntry = new OdfFileEntry(fileEntryEle);

+				}

+				if (path != null) {

+					entries.put(path, currentFileEntry);

+				}

 			}

 			fileEntryEle = OdfElement.findNextChildNode(FileEntryElement.class, fileEntryEle);

 		}

 		mMemoryFileCache.remove(OdfFile.MANIFEST.getPath());

 		mPkgDoms.put(OdfFile.MANIFEST.getPath(), mManifestDom);

-		// } catch (Exception ex) {

-		// Logger.getLogger(OdfPackage.class.getName()).log(Level.SEVERE, null,

-		// ex);

-		// }

 	}

 

 	XMLReader getXMLReader() throws ParserConfigurationException, SAXException {

@@ -1252,23 +1199,37 @@
 		saxFactory.setNamespaceAware(true);

 		saxFactory.setValidating(false);

 		try {

+			saxFactory.setXIncludeAware(false);

 			saxFactory.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false);

+			// removing potential vulnerability: see https://www.owasp.org/index.php/XML_External_Entity_%28XXE%29_Processing

+			saxFactory.setFeature("http://xml.org/sax/features/external-general-entities", false);

+			saxFactory.setFeature("http://xml.org/sax/features/external-parameter-entities", false);

+			saxFactory.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true);

 		} catch (Exception ex) {

 			Logger.getLogger(OdfPackage.class.getName()).log(Level.SEVERE, null, ex);

+			throw new RuntimeException();

 		}

 

-		SAXParser parser = saxFactory.newSAXParser();

+		SAXParser parser;

+		try {

+			parser = saxFactory.newSAXParser();

+		} catch (ParserConfigurationException pce) {

+			//Re-throw as SAXException in order not to introduce too many checked exceptions

+			throw new SAXException(pce);

+		}

 		XMLReader xmlReader = parser.getXMLReader();

-		// More details at

-		// http://xerces.apache.org/xerces2-j/features.html#namespaces

+		// More details at http://xerces.apache.org/xerces2-j/features.html#namespaces

 		xmlReader.setFeature("http://xml.org/sax/features/namespaces", true);

-		// More details at

-		// http://xerces.apache.org/xerces2-j/features.html#namespace-prefixes

+		// More details at http://xerces.apache.org/xerces2-j/features.html#namespace-prefixes

 		xmlReader.setFeature("http://xml.org/sax/features/namespace-prefixes", true);

-		// More details at

-		// http://xerces.apache.org/xerces2-j/features.html#xmlns-uris

+		// More details at http://xerces.apache.org/xerces2-j/features.html#xmlns-uris

 		xmlReader.setFeature("http://xml.org/sax/features/xmlns-uris", true);

+		// removing potential vulnerability: see https://www.owasp.org/index.php/XML_External_Entity_%28XXE%29_Processing

+		xmlReader.setFeature("http://xml.org/sax/features/external-general-entities", false);

+		xmlReader.setFeature("http://xml.org/sax/features/external-parameter-entities", false);

+		xmlReader.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true);

 		return xmlReader;

+

 	}

 

 	// Add the given path and all its subdirectories to the internalPath list

@@ -1284,6 +1245,7 @@
 				if (tok.hasMoreTokens()) {

 					path = path + directory + SLASH;

 					OdfFileEntry fileEntry = mManifestEntries.get(path);

+					// ??? no subdirectory without mimetype in the specification allowed

 					if (fileEntry == null) {

 						mManifestEntries.put(path, new OdfFileEntry(manifestEle.newFileEntryElement(path, null)));

 					}

@@ -1295,15 +1257,10 @@
 	/**

 	 * Insert DOM tree into OdfPackage. An existing file will be replaced.

 	 *

-	 * @param fileDOM

-	 *            - XML DOM tree to be inserted as file.

-	 * @param internalPath

-	 *            - relative documentURL where the DOM tree should be inserted

-	 *            as XML file

-	 * @param mediaType

-	 *            - media type of stream. Set to null if unknown

-	 * @throws java.lang.Exception

-	 *             when the DOM tree could not be inserted

+	 * @param fileDOM - XML DOM tree to be inserted as file.

+	 * @param internalPath - relative documentURL where the DOM tree should be inserted as XML file

+	 * @param mediaType - media type of stream. Set to null if unknown

+	 * @throws java.lang.Exception when the DOM tree could not be inserted

 	 */

 	public void insert(Document fileDOM, String internalPath, String mediaType) {

 		internalPath = normalizeFilePath(internalPath);

@@ -1323,74 +1280,93 @@
 	}

 

 	/**

-	 * Embed an OdfPackageDocument to the current OdfPackage. All the file

-	 * entries of child document will be inserted.

+	 * Embed an OdfPackageDocument to the current OdfPackage. All the file entries of child document

+	 * will be inserted.

 	 *

-	 * @param sourceDocument

-	 *            the OdfPackageDocument to be embedded.

-	 * @param internalPath

-	 *            path to the directory the ODF document should be inserted

-	 *            (relative to ODF package root).

+	 * @param sourceDocument the OdfPackageDocument to be embedded.

+	 * @param destinationPath path to the directory the ODF document should be inserted (relative to

+	 * ODF package root).

 	 */

-	public void insertDocument(OdfPackageDocument sourceDocument, String internalPath) {

-		internalPath = normalizeDirectoryPath(internalPath);

+	public void insertDocument(OdfPackageDocument sourceDocument, String destinationPath) {

+		destinationPath = normalizeDirectoryPath(destinationPath);

 		// opened DOM of descendant Documents will be flashed to the their pkg

 		flushDoms(sourceDocument);

-

 		// Gets the OdfDocument's manifest entry info, no matter it is a

 		// independent document or an embeddedDocument.

-		Map<String, OdfFileEntry> entryMapToCopy;

+		Map<String, OdfFileEntry> manifestEntriesToCopy;

+		String sourceSubPath = null;

 		if (sourceDocument.isRootDocument()) {

-			entryMapToCopy = sourceDocument.getPackage().getManifestEntries();

+			manifestEntriesToCopy = sourceDocument.getPackage().getManifestEntries();

+			sourceSubPath = ROOT_DOCUMENT_PATH;

 		} else {

-			entryMapToCopy = sourceDocument.getPackage().getSubDirectoryEntries(this, sourceDocument.getDocumentPath());

+			manifestEntriesToCopy = sourceDocument.getPackage().getSubDirectoryEntries(sourceDocument.getDocumentPath());

+			sourceSubPath = sourceDocument.getDocumentPath();

 		}

+		addEntriesToPackageAndManifest(manifestEntriesToCopy, sourceDocument, sourceSubPath, destinationPath);

+

+		if (!mManifestEntries.containsKey(destinationPath)) {

+			ManifestElement manifestEle = mManifestDom.getRootElement();

+			// make sure the media type of embedded Document is right set.

+			OdfFileEntry embedDocumentRootEntry = new OdfFileEntry(manifestEle.newFileEntryElement(destinationPath, sourceDocument.getMediaTypeString()));

+			mManifestEntries.put(destinationPath, embedDocumentRootEntry);

+		}

+		// the new document will be attached to its new package (it has been

+		// inserted to)

+		sourceDocument.setPackage(this);

+		cacheDocument(sourceDocument, destinationPath);

+	}

+

+	private void addEntriesToPackageAndManifest(Map<String, OdfFileEntry> entryMapToCopy, OdfPackageDocument sourceDocument, String subDocumentPath, String destinationPath) {

 		// insert to package and add it to the Manifest

-		internalPath = sourceDocument.setDocumentPath(internalPath);

-		String documentDirectory = null;

-		if (internalPath.equals(SLASH)) {

-			documentDirectory = EMPTY_STRING;

-		} else {

-			documentDirectory = internalPath;

-		}

+		destinationPath = sourceDocument.setDocumentPath(destinationPath);

+

 		Set<String> entryNameList = entryMapToCopy.keySet();

 		for (String entryName : entryNameList) {

 			OdfFileEntry entry = entryMapToCopy.get(entryName);

 			if (entry != null) {

 				try {

+					if (!subDocumentPath.equals(ROOT_DOCUMENT_PATH)) {

+						entryName = entryName.substring(subDocumentPath.length());

+						if (entryName.length() == 0) {

+							entryName = SLASH;

+						}

+					}

 					// if entry is a directory (e.g. an ODF document root)

 					if (entryName.endsWith(SLASH)) {

 						// insert directory

 						if (entryName.equals(SLASH)) {

-							insert((byte[]) null, documentDirectory, sourceDocument.getMediaTypeString());

+							insert((byte[]) null, destinationPath, sourceDocument.getMediaTypeString());

 						} else {

-							insert((byte[]) null, documentDirectory + entry.getPath(), entry.getMediaTypeString());

+							String mediaType = sourceDocument.getMediaTypeString();

+							if (mediaType != null && mediaType.length() != 0) {

+								if (!destinationPath.equals(SLASH)) {

+									entryName = destinationPath + entryName;

+								}

+								insert((byte[]) null, entryName, entry.getMediaTypeString());

+							}

 						}

 					} else {

-						String packagePath = documentDirectory + entry.getPath();

-						insert(sourceDocument.getPackage().getInputStream(entryName), packagePath, entry.getMediaTypeString());

+						String documentDirectory = null;

+						if (destinationPath.equals(SLASH)) {

+							documentDirectory = EMPTY_STRING;

+						} else {

+							documentDirectory = destinationPath;

+						}

+						String packagePath = documentDirectory + entryName;

+						insert(sourceDocument.getPackage().getInputStream(entry.getPath()), packagePath, entry.getMediaTypeString());

 					}

 				} catch (Exception ex) {

 					Logger.getLogger(OdfPackage.class.getName()).log(Level.SEVERE, null, ex);

 				}

 			}

 		}

-		// make sure the media type of embedded Document is right set.

-		ManifestElement manifestEle = mManifestDom.getRootElement();

-		OdfFileEntry embedDocumentRootEntry = new OdfFileEntry(manifestEle.newFileEntryElement(internalPath, sourceDocument.getMediaTypeString()));

-		mManifestEntries.put(internalPath, embedDocumentRootEntry);

-		// the new document will be attached to its new package (it has been

-		// inserted to)

-		sourceDocument.setPackage(this);

-		cacheDocument(sourceDocument, internalPath);

 	}

 

 	/**

-	 * Insert all open DOMs of XML files beyond parent document to the package.

-	 * The XML files will be updated in the package after calling save.

+	 * Insert all open DOMs of XML files beyond parent document to the package. The XML files will

+	 * be updated in the package after calling save.

 	 *

-	 * @param parentDocument

-	 *            the document, which XML files shall be serialized

+	 * @param parentDocument the document, which XML files shall be serialized

 	 */

 	void flushDoms(OdfPackageDocument parentDocument) {

 		OdfPackage pkg = parentDocument.getPackage();

@@ -1416,24 +1392,17 @@
 		}

 	}

 

-	/** Get all the file entries from a sub directory */

-	private Map<String, OdfFileEntry> getSubDirectoryEntries(OdfPackage destinationPackage, String directory) {

-		directory = normalizeDirectoryPath(directory);

+	/**

+	 * Get all the file entries from a sub oldDirectory

+	 */

+	private Map<String, OdfFileEntry> getSubDirectoryEntries(String oldDirectory) {

+		oldDirectory = normalizeDirectoryPath(oldDirectory);

 		Map<String, OdfFileEntry> subEntries = new HashMap<String, OdfFileEntry>();

 		Map<String, OdfFileEntry> allEntries = getManifestEntries();

 		Set<String> rootEntryNameSet = getFilePaths();

-		ManifestElement manifestEle = destinationPackage.getManifestDom().getRootElement();

 		for (String entryName : rootEntryNameSet) {

-			if (entryName.startsWith(directory)) {

-				String newEntryName = entryName.substring(directory.length());

-				if (newEntryName.length() == 0) {

-					newEntryName = SLASH;

-				}

-				OdfFileEntry srcFileEntry = allEntries.get(entryName);

-				OdfFileEntry newFileEntry = new OdfFileEntry(manifestEle.newFileEntryElement(newEntryName, srcFileEntry.getMediaTypeString()));

-				newFileEntry.setEncryptionData(srcFileEntry.getEncryptionData());

-				newFileEntry.setSize(srcFileEntry.getSize());

-				subEntries.put(entryName, newFileEntry);

+			if (entryName.startsWith(oldDirectory)) {

+				subEntries.put(entryName, allEntries.get(entryName));

 			}

 		}

 		return subEntries;

@@ -1442,39 +1411,33 @@
 	/**

 	 * Method returns the paths of all document within the package.

 	 *

-	 * @return A set of paths of all documents of the package, including the

-	 *         root document.

+	 * @return A set of paths of all documents of the package, including the root document.

 	 */

 	public Set<String> getDocumentPaths() {

 		return getDocumentPaths(null, null);

 	}

 

 	/**

-	 * Method returns the paths of all document within the package matching the

-	 * given criteria.

+	 * Method returns the paths of all document within the package matching the given criteria.

 	 *

-	 * @param mediaTypeString

-	 *            limits the desired set of document paths to documents of the

-	 *            given mediaType

-	 * @return A set of paths of all documents of the package, including the

-	 *         root document, that match the given parameter.

+	 * @param mediaTypeString limits the desired set of document paths to documents of the given

+	 * mediaType

+	 * @return A set of paths of all documents of the package, including the root document, that

+	 * match the given parameter.

 	 */

 	public Set<String> getDocumentPaths(String mediaTypeString) {

 		return getDocumentPaths(mediaTypeString, null);

 	}

 

 	/**

-	 * Method returns the paths of all document within the package matching the

-	 * given criteria.

+	 * Method returns the paths of all document within the package matching the given criteria.

 	 *

-	 * @param mediaTypeString

-	 *            limits the desired set of document paths to documents of the

-	 *            given mediaType

-	 * @param subDirectory

-	 *            limits the desired set document paths to those documents below

-	 *            of this subdirectory

-	 * @return A set of paths of all documents of the package, including the

-	 *         root document, that match the given parameter.

+	 * @param mediaTypeString limits the desired set of document paths to documents of the given

+	 * mediaType

+	 * @param subDirectory limits the desired set document paths to those documents below of this

+	 * subdirectory

+	 * @return A set of paths of all documents of the package, including the root document, that

+	 * match the given parameter.

 	 */

 	Set<String> getDocumentPaths(String mediaTypeString, String subDirectory) {

 		Set<String> innerDocuments = new HashSet<String>();

@@ -1503,13 +1466,13 @@
 	}

 

 	/**

-	 * Adding a manifest:file-entry to be saved in manifest.xml. In addition,

-	 * sub directories will be added as well to the manifest.

+	 * Adding a manifest:file-entry to be saved in manifest.xml. In addition, sub directories will

+	 * be added as well to the manifest.

 	 */

 	private OdfFileEntry ensureFileEntryExistence(String internalPath) {

 		// if it is NOT the resource "/META-INF/manifest.xml"

 		OdfFileEntry fileEntry = null;

-		if (!OdfFile.MANIFEST.internalPath.equals(internalPath) || !internalPath.equals(EMPTY_STRING)) {

+		if (!OdfFile.MANIFEST.internalPath.equals(internalPath) && !internalPath.equals(EMPTY_STRING)) {

 			if (mManifestEntries == null) {

 				mManifestEntries = new HashMap<String, OdfFileEntry>();

 			}

@@ -1517,12 +1480,14 @@
 			// for every new file entry

 			if (fileEntry == null) {

 				ManifestElement manifestEle = getManifestDom().getRootElement();

-				if (manifestEle == null)

+				if (manifestEle == null) {

 					return null;

+				}

 				fileEntry = new OdfFileEntry(manifestEle.newFileEntryElement(internalPath, ""));

 				mManifestEntries.put(internalPath, fileEntry);

 				// creates recursive file entries for all sub directories

-				createSubEntries(internalPath);

+				// BUT ONLY SUBDIRECTORYS WITH MIMETYPE (documents) ARE ALLOWED IN THE MANIFEST

+				// createSubEntries(internalPath);

 			}

 		}

 		return fileEntry;

@@ -1535,7 +1500,7 @@
 		// overwrite previous settings

 		fileEntry.setMediaTypeString(mediaType);

 		// reset encryption data (ODFDOM does not support encryption yet)

-		fileEntry.setEncryptionData(null);

+//		fileEntry.setEncryptionData(null);

 		// reset size to be unset

 		fileEntry.setSize(null);

 	}

@@ -1543,8 +1508,7 @@
 	/**

 	 * Gets org.w3c.dom.Document for XML file contained in package.

 	 *

-	 * @param internalPath

-	 *            to a file within the Odf Package (eg. content.xml)

+	 * @param internalPath to a file within the Odf Package (eg. content.xml)

 	 * @return an org.w3c.dom.Document

 	 * @throws SAXException

 	 * @throws ParserConfigurationException

@@ -1591,18 +1555,12 @@
 	}

 

 	/**

-	 * Inserts an external file into an OdfPackage. An existing file will be

-	 * replaced.

+	 * Inserts an external file into an OdfPackage. An existing file will be replaced.

 	 *

-	 * @param sourceURI

-	 *            - the source URI to the file to be inserted into the package.

-	 * @param internalPath

-	 *            - relative documentURL where the tree should be inserted as

-	 *            XML file

-	 * @param mediaType

-	 *            - media type of stream. Set to null if unknown

-	 * @throws java.lang.Exception

-	 *             In case the file could not be saved

+	 * @param sourceURI - the source URI to the file to be inserted into the package.

+	 * @param internalPath - relative documentURL where the tree should be inserted as XML file

+	 * @param mediaType - media type of stream. Set to null if unknown

+	 * @throws java.lang.Exception In case the file could not be saved

 	 */

 	public void insert(URI sourceURI, String internalPath, String mediaType) throws Exception {

 		InputStream is = null;

@@ -1617,16 +1575,11 @@
 	}

 

 	/**

-	 * Inserts InputStream into an OdfPackage. An existing file will be

-	 * replaced.

+	 * Inserts InputStream into an OdfPackage. An existing file will be replaced.

 	 *

-	 * @param fileStream

-	 *            - the stream of the file to be inserted into the ODF package.

-	 * @param internalPath

-	 *            - relative documentURL where the tree should be inserted as

-	 *            XML file

-	 * @param mediaType

-	 *            - media type of stream. Set to null if unknown

+	 * @param fileStream - the stream of the file to be inserted into the ODF package.

+	 * @param internalPath - relative documentURL where the tree should be inserted as XML file

+	 * @param mediaType - media type of stream. Set to null if unknown

 	 */

 	public void insert(InputStream fileStream, String internalPath, String mediaType) throws Exception {

 		internalPath = normalizeFilePath(internalPath);

@@ -1648,20 +1601,17 @@
 	}

 

 	/**

-	 * Inserts a byte array into OdfPackage. An existing file will be replaced.

-	 * If the byte array is NULL a directory with the given mimetype will be

-	 * created.

+	 * Inserts a byte array into OdfPackage. An existing file will be replaced. If the byte array is

+	 * NULL a directory with the given mimetype will be created.

 	 *

-	 * @param fileBytes

-	 *            - data of the file stream to be stored in package. If NULL a

-	 *            directory with the given mimetype will be created.

-	 * @param internalPath

-	 *            - path of the file or directory relative to the package root.

-	 * @param mediaTypeString

-	 *            - media type of stream. If unknown null can be used.

+	 * @param fileBytes - data of the file stream to be stored in package. If NULL a directory with

+	 * the given mimetype will be created.

+	 * @param internalPath - path of the file or directory relative to the package root.

+	 * @param mediaTypeString - media type of stream. If unknown null can be used.

 	 */

 	public void insert(byte[] fileBytes, String internalPath, String mediaTypeString) {

 		internalPath = normalizeFilePath(internalPath);

+		// if path is from the mimetype, which should be first in document

 		if (OdfPackage.OdfFile.MEDIA_TYPE.getPath().equals(internalPath)) {

 			try {

 				setMediaTypeString(new String(fileBytes, "UTF-8"));

@@ -1690,8 +1640,7 @@
 	/**

 	 * Get package (sub-) content as byte array

 	 *

-	 * @param internalPath

-	 *            relative documentURL to the package content

+	 * @param internalPath relative documentURL to the package content

 	 * @return the unzipped package content as byte array

 	 * @throws java.lang.Exception

 	 */

@@ -1747,6 +1696,7 @@
 						mMemoryFileCache.put(internalPath, data);

 					}

 				} catch (IOException ex) {

+					//Catching IOException here should be fine: in-memory operations only

 					Logger.getLogger(OdfPackage.class.getName()).log(Level.SEVERE, null, ex);

 				} finally {

 					try {

@@ -1816,7 +1766,6 @@
 			 * raw = skey.getEncoded(); // algorithm-name="Blowfish CFB"

 			 * SecretKeySpec skeySpec = new SecretKeySpec(raw, "Blowfish");

 			 */

-

 			byte[] dk = derivePBKDF2Key(passBytes, salt, 1024, 16);

 			SecretKeySpec key = new SecretKeySpec(dk, "Blowfish");

 			// 8.The files are encrypted: The random number

@@ -1867,7 +1816,7 @@
 			// System.out.println("size=\""+ data.length +"\"");

 			// System.out.println("checksum=\""+ checksum +"\"");

 			// System.out.println("compressedData ="+compressedDataLength);

-

+			// System.out.println("MANIFEST: " + fileEntryElement.getParentNode().toString());

 		} catch (Exception e) {

 			// throws NoSuchAlgorithmException,

 			// InvalidKeySpecException, NoSuchPaddingException,

@@ -2008,14 +1957,11 @@
 	}

 

 	/**

-	 * Get the latest version of package content as InputStream, as it would be

-	 * saved. This might not be the original version once loaded from the

-	 * package.

+	 * Get the latest version of package content as InputStream, as it would be saved. This might

+	 * not be the original version once loaded from the package.

 	 *

-	 * @param internalPath

-	 *            of the desired stream.

-	 * @return Inputstream of the ODF file within the package for the given

-	 *         path.

+	 * @param internalPath of the desired stream.

+	 * @return Inputstream of the ODF file within the package for the given path.

 	 */

 	public InputStream getInputStream(String internalPath) {

 		internalPath = normalizeFilePath(internalPath);

@@ -2037,17 +1983,13 @@
 	}

 

 	/**

-	 * Get the latest version of package content as InputStream, as it would be

-	 * saved. This might not be the original version once loaded from the

-	 * package.

+	 * Get the latest version of package content as InputStream, as it would be saved. This might

+	 * not be the original version once loaded from the package.

 	 *

-	 * @param internalPath

-	 *            of the desired stream.

-	 * @param useOriginal

-	 *            true uses the stream as loaded from the ZIP. False will return

-	 *            even modified file content as a stream.

-	 * @return Inputstream of the ODF file within the package for the given

-	 *         path.

+	 * @param internalPath of the desired stream.

+	 * @param useOriginal true uses the stream as loaded from the ZIP. False will return even

+	 * modified file content as a stream.

+	 * @return Inputstream of the ODF file within the package for the given path.

 	 */

 	public InputStream getInputStream(String internalPath, boolean useOriginal) {

 		InputStream stream = null;

@@ -2057,6 +1999,7 @@
 				try {

 					stream = mZipFile.getInputStream(entry);

 				} catch (IOException ex) {

+					//Catching IOException here should be fine: in-memory operations only

 					Logger.getLogger(OdfPackage.class.getName()).log(Level.SEVERE, null, ex);

 				}

 			}

@@ -2070,76 +2013,35 @@
 	 * Gets the InputStream containing whole OdfPackage.

 	 *

 	 * @return the ODF package as input stream

-	 * @throws java.lang.Exception

-	 *             - if the package could not be read

+	 * @throws java.io.IOException - if the package could not be read

 	 */

-	public InputStream getInputStream() throws Exception {

-		final PipedOutputStream os = new PipedOutputStream();

-		final PipedInputStream is = new PipedInputStream();

-

-		is.connect(os);

-

-		Thread thread1 = new Thread() {

-

-			@Override

-			public void run() {

-				try {

-					save(os, mBaseURI);

-				} catch (Exception e) {

-				}

-			}

-		};

-

-		Thread thread2 = new Thread() {

-

-			@Override

-			public void run() {

-				try {

-					BufferedInputStream bis = new BufferedInputStream(is, StreamHelper.PAGE_SIZE);

-					BufferedOutputStream bos = new BufferedOutputStream(os, StreamHelper.PAGE_SIZE);

-					StreamHelper.transformStream(bis, bos);

-					is.close();

-					os.close();

-				} catch (Exception ie) {

-				}

-			}

-		};

-

-		thread1.start();

-		thread2.start();

-

-		return is;

+	public InputStream getInputStream() throws IOException {

+		ByteArrayOutputStream out = new ByteArrayOutputStream();

+		save(out, mBaseURI);

+		return new ByteArrayInputStream(out.toByteArray());

 	}

 

 	/**

-	 * Insert the OutputStream for into OdfPackage. An existing file will be

-	 * replaced.

+	 * Insert the OutputStream for into OdfPackage. An existing file will be replaced.

 	 *

-	 * @param internalPath

-	 *            - relative documentURL where the DOM tree should be inserted

-	 *            as XML file

+	 * @param internalPath - relative documentURL where the DOM tree should be inserted as XML file

 	 * @return outputstream for the data of the file to be stored in package

-	 * @throws java.lang.Exception

-	 *             when the DOM tree could not be inserted

+	 * @throws java.lang.Exception when the DOM tree could not be inserted

 	 */

 	public OutputStream insertOutputStream(String internalPath) throws Exception {

 		return insertOutputStream(internalPath, null);

 	}

 

 	/**

-	 * Insert the OutputStream - to be filled after method - when stream is

-	 * closed into OdfPackage. An existing file will be replaced.

+	 * Insert the OutputStream - to be filled after method - when stream is closed into OdfPackage.

+	 * An existing file will be replaced.

 	 *

-	 * @param internalPath

-	 *            - relative documentURL where the DOM tree should be inserted

-	 *            as XML file

-	 * @param mediaType

-	 *            - media type of stream

+	 * @param internalPath - relative documentURL where the DOM tree should be inserted as XML file

+	 * @param mediaType - media type of stream

 	 * @return outputstream for the data of the file to be stored in package

-	 * @throws java.lang.Exception

-	 *             when the DOM tree could not be inserted

+	 * @throws java.io.IOException when the DOM tree could not be inserted

 	 */

-	public OutputStream insertOutputStream(String internalPath, String mediaType) throws Exception {

+	public OutputStream insertOutputStream(String internalPath, String mediaType) throws IOException {

 		internalPath = normalizeFilePath(internalPath);

 		final String fPath = internalPath;

 		final OdfFileEntry fFileEntry = getFileEntry(internalPath);

@@ -2148,18 +2050,14 @@
 		ByteArrayOutputStream baos = new ByteArrayOutputStream() {

 

 			@Override

-			public void close() {

-				try {

-					byte[] data = this.toByteArray();

-					if (fMediaType == null || fMediaType.length() == 0) {

-						insert(data, fPath, fFileEntry == null ? null : fFileEntry.getMediaTypeString());

-					} else {

-						insert(data, fPath, fMediaType);

-					}

-					super.close();

-				} catch (Exception ex) {

-					Logger.getLogger(OdfPackage.class.getName()).log(Level.SEVERE, null, ex);

+			public void close() throws IOException {

+				byte[] data = this.toByteArray();

+				if (fMediaType == null || fMediaType.length() == 0) {

+					insert(data, fPath, fFileEntry == null ? null : fFileEntry.getMediaTypeString());

+				} else {

+					insert(data, fPath, fMediaType);

 				}

+				super.close();

 			}

 		};

 		return baos;

@@ -2168,8 +2066,7 @@
 	/**

 	 * Removes a single file from the package.

 	 *

-	 * @param internalPath

-	 *            of the file relative to the package root

+	 * @param internalPath of the file relative to the package root

 	 */

 	public void remove(String internalPath) {

 		internalPath = normalizePath(internalPath);

@@ -2177,13 +2074,31 @@
 			mZipEntries.remove(internalPath);

 		}

 		if (mManifestEntries != null && mManifestEntries.containsKey(internalPath)) {

+			// remove from the manifest Map

 			OdfFileEntry manifestEntry = mManifestEntries.remove(internalPath);

+			// remove from the manifest DOM

 			FileEntryElement manifestEle = manifestEntry.getOdfElement();

 			manifestEle.getParentNode().removeChild(manifestEle);

 		}

 	}

 

 	/**

+	 * Get the size of an internal file from the package.

+	 *

+	 * @param internalPath of the file relative to the package root

+	 * @return the size of the file in bytes or -1 if the size could not be received.

+	 */

+	public long getSize(String internalPath) {

+		long size = -1;

+		internalPath = normalizePath(internalPath);

+		if (mZipEntries != null && mZipEntries.containsKey(internalPath)) {

+			ZipEntry zipEntry = mZipEntries.get(internalPath);

+			size = zipEntry.getSize();;

+		}

+		return size;

+	}

+

+	/**

 	 * Encoded XML Attributes

 	 */

 	private String encodeXMLAttributes(String attributeValue) {

@@ -2193,8 +2108,7 @@
 	}

 

 	/**

-	 * Get EntityResolver to be used in XML Parsers which can resolve content

-	 * inside the OdfPackage

+	 * Get EntityResolver to be used in XML Parsers which can resolve content inside the OdfPackage

 	 *

 	 * @return a SAX EntityResolver

 	 */

@@ -2206,8 +2120,8 @@
 	}

 

 	/**

-	 * Get URIResolver to be used in XSL Transformations which can resolve

-	 * content inside the OdfPackage

+	 * Get URIResolver to be used in XSL Transformations which can resolve content inside the

+	 * OdfPackage

 	 *

 	 * @return a TraX Resolver

 	 */

@@ -2218,60 +2132,62 @@
 		return mResolver;

 	}

 

-	private static String getBaseURLFromFile(File file) throws Exception {

+	private static String getBaseURLFromFile(File file) throws IOException {

 		String baseURL = Util.toExternalForm(file.getCanonicalFile().toURI());

 		baseURL = BACK_SLASH_PATTERN.matcher(baseURL).replaceAll(SLASH);

 		return baseURL;

 	}

 

 	/**

-	 * Ensures that the given file path is not null nor empty and not an

-	 * external reference

+	 * Ensures that the given file path is not null nor empty and not an external reference

 	 * <ol>

 	 * <li>All backslashes "\" are exchanged by slashes "/"</li>

 	 * <li>Any substring "/../", "/./" or "//" will be removed</li>

 	 * <li>A prefix "./" and "../" will be removed</li>

 	 * </ol>

 	 *

-	 * @throws IllegalArgumentException

-	 *             If the path is NULL, empty or an external path (e.g. starting

-	 *             with "../" is given). None relative URLs will NOT throw an

-	 *             exception.

+	 * @throws IllegalArgumentException If the path is NULL, empty or an external path (e.g.

+	 * starting with "../" is given). None relative URLs will NOT throw an exception.

 	 * @return the normalized path or the URL

 	 */

 	static String normalizeFilePath(String internalPath) {

 		if (internalPath.equals(EMPTY_STRING)) {

-			String errMsg = "The internalPath given by parameter is an empty string!";

-			Logger.getLogger(OdfPackage.class.getName()).severe(errMsg);

-			throw new IllegalArgumentException(errMsg);

+			return SLASH;

 		} else {

 			return normalizePath(internalPath);

 		}

 	}

 

 	/**

-	 * Ensures the given directory path is not null nor an external reference to

-	 * resources outside the package. An empty path and slash "/" are both

-	 * mapped to the root directory/document. NOTE: Although ODF only refer the

-	 * "/" as root, the empty path aligns more adequate with the file system

-	 * concept. To ensure the given directory path within the package can be

-	 * used as a key (is unique for the Package) the path will be normalized.

+	 * Ensures the given directory path is not null nor an external reference to resources outside

+	 * the package. An empty path and slash "/" are both mapped to the root directory/document.

+	 * NOTE: Although ODF only refer the "/" as root, the empty path aligns more adequate with the

+	 * file system concept. To ensure the given directory path within the package can be used as a

+	 * key (is unique for the Package) the path will be normalized.

 	 *

-	 * @see #normalizeFilePath(String) In addition to the file path

-	 *      normalization a trailing slash will be used for directories.

+	 * @see #normalizeFilePath(String) In addition to the file path normalization a trailing slash

+	 * will be used for directories.

 	 */

 	static String normalizeDirectoryPath(String directoryPath) {

 		directoryPath = normalizePath(directoryPath);

 		// if not the root document - which is from ODF view a '/' and no

 		// trailing '/'

-		if (!directoryPath.equals(OdfPackageDocument.ROOT_DOCUMENT_PATH) && !directoryPath.endsWith(SLASH)) {

-			// add a trailing slash

-			directoryPath = directoryPath + SLASH;

+		if (!directoryPath.equals(OdfPackageDocument.ROOT_DOCUMENT_PATH)) {

+			if (!directoryPath.endsWith(SLASH)) {

+				// add a trailing slash

+				directoryPath = directoryPath + SLASH;

+			}

+			if (directoryPath.startsWith(SLASH) && !directoryPath.equals(SLASH)) {

+				directoryPath = directoryPath.substring(1);

+			}

 		}

 		return directoryPath;

 	}

 

-	/** Normalizes both directory and file path */

+	/**

+	 * 1

+	 * Normalizes both directory and file path

+	 */

 	static String normalizePath(String path) {

 		if (path == null) {

 			String errMsg = "The internalPath given by parameter is NULL!";

@@ -2294,29 +2210,35 @@
 				if (path.indexOf("/.") != -1 || path.indexOf("./") != -1) {

 					path = removeChangeDirectories(path);

 				}

+				if (path.startsWith(SLASH) && !path.equals(SLASH)) {

+					path = path.substring(1);

+				}

 			}

 		}

 		return path;

 	}

 

-	/** Normalizes both directory and file path */

+	/**

+	 * Normalizes both directory and file path

+	 */

 	private static boolean mightBeExternalReference(String internalPath) {

 		boolean isExternalReference = false;

 		// if the fileReference is a external relative documentURL..

-		if (internalPath.startsWith(DOUBLE_DOT) || // or absolute documentURL

-													// AND not root document

-				internalPath.startsWith(SLASH) && !internalPath.equals(SLASH) || // or

-																					// absolute

-																					// IRI

-				internalPath.contains(COLON)) {

+		if (internalPath.startsWith(DOUBLE_DOT)

+			|| // or absolute documentURL

+			// AND not root document

+			internalPath.startsWith(SLASH) && !internalPath.equals(SLASH)

+			|| // or

+			// absolute

+			// IRI

+			internalPath.contains(COLON)) {

 			isExternalReference = true;

 		}

 		return isExternalReference;

 	}

 

 	/**

-	 * Resolving the directory replacements (ie. "/../" and "/./") with a slash

-	 * "/"

+	 * Resolving the directory replacements (ie. "/../" and "/./") with a slash "/"

 	 */

 	private static String removeChangeDirectories(String path) {

 		boolean isDirectory = path.endsWith(SLASH);

@@ -2344,8 +2266,8 @@
 			if (currentToken.equals(DOUBLE_DOT)) {

 				removeDirLevel++;

 			} else if (currentToken.equals(DOT)) {

-			} else {

-				// if a path have to be remove, neglect current path

+			} else // if a path have to be remove, neglect current path

+			{

 				if (removeDirLevel > 0) {

 					removeDirLevel--;

 				} else {

@@ -2367,11 +2289,9 @@
 	}

 

 	/**

-	 * Checks if the given reference is a reference, which points outside the

-	 * ODF package

+	 * Checks if the given reference is a reference, which points outside the ODF package

 	 *

-	 * @param internalPath

-	 *            the file reference to be checked

+	 * @param internalPath the file reference to be checked

 	 * @return true if the reference is an package external reference

 	 */

 	public static boolean isExternalReference(String internalPath) {

@@ -2385,19 +2305,17 @@
 	/**

 	 * Allow an application to register an error event handler.

 	 * <p>

-	 * If the application does not register an error handler, all error events

-	 * reported by the ODFDOM (e.g. the SAX Parser) will be silently ignored;

-	 * however, normal processing may not continue. It is highly recommended

-	 * that all ODF applications implement an error handler to avoid unexpected

-	 * bugs.

+	 * If the application does not register an error handler, all error events reported by the

+	 * ODFDOM (e.g. the SAX Parser) will be silently ignored; however, normal processing may not

+	 * continue. It is highly recommended that all ODF applications implement an error handler to

+	 * avoid unexpected bugs.

 	 * </p>

 	 * <p>

-	 * Applications may register a new or different handler in the middle of a

-	 * parse, and the ODFDOM will begin using the new handler immediately.

+	 * Applications may register a new or different handler in the middle of a parse, and the ODFDOM

+	 * will begin using the new handler immediately.

 	 * </p>

 	 *

-	 * @param handler

-	 *            The error handler.

+	 * @param handler The error handler.

 	 * @see #getErrorHandler

 	 */

 	public void setErrorHandler(ErrorHandler handler) {

@@ -2407,8 +2325,8 @@
 	/**

 	 * Return the current error handler used for ODF validation.

 	 *

-	 * @return The current error handler, or null if none has been registered

-	 *         and validation is disabled.

+	 * @return The current error handler, or null if none has been registered and validation is

+	 * disabled.

 	 * @see #setErrorHandler

 	 */

 	public ErrorHandler getErrorHandler() {

@@ -2416,7 +2334,6 @@
 	}

 

 	void logValidationWarning(ValidationConstraint constraint, String baseURI, Object... o) throws SAXException {

-		// try{

 		if (mErrorHandler == null) {

 			return;

 		}

@@ -2425,24 +2342,19 @@
 			varCount = o.length;

 		}

 		switch (varCount) {

-		case 0:

-			mErrorHandler.warning(new OdfValidationException(constraint, baseURI, o));

-			break;

-		case 1:

-			mErrorHandler.warning(new OdfValidationException(constraint, baseURI, o[0]));

-			break;

-		case 2:

-			mErrorHandler.warning(new OdfValidationException(constraint, baseURI, o[0], o[1]));

-			break;

+			case 0:

+				mErrorHandler.warning(new OdfValidationException(constraint, baseURI, o));

+				break;

+			case 1:

+				mErrorHandler.warning(new OdfValidationException(constraint, baseURI, o[0]));

+				break;

+			case 2:

+				mErrorHandler.warning(new OdfValidationException(constraint, baseURI, o[0], o[1]));

+				break;

 		}

-		// } catch (SAXException ex){

-		// Logger.getLogger(OdfPackage.class.getName()).log(Level.WARNING, null,

-		// ex);

-		// }

 	}

 

 	void logValidationError(ValidationConstraint constraint, String baseURI, Object... o) throws SAXException {

-		// try{

 		if (mErrorHandler == null) {

 			return;

 		}

@@ -2451,33 +2363,28 @@
 			varCount = o.length;

 		}

 		switch (varCount) {

-		case 0:

-			mErrorHandler.error(new OdfValidationException(constraint, baseURI, o));

-			break;

-		case 1:

-			mErrorHandler.error(new OdfValidationException(constraint, baseURI, o[0]));

-			break;

-		case 2:

-			mErrorHandler.error(new OdfValidationException(constraint, baseURI, o[0], o[1]));

-			break;

+			case 0:

+				mErrorHandler.error(new OdfValidationException(constraint, baseURI, o));

+				break;

+			case 1:

+				mErrorHandler.error(new OdfValidationException(constraint, baseURI, o[0]));

+				break;

+			case 2:

+				mErrorHandler.error(new OdfValidationException(constraint, baseURI, o[0], o[1]));

+				break;

 		}

-		// } catch (SAXException ex) {

-		// Logger.getLogger(OdfPackage.class.getName()).log(Level.SEVERE, null,

-		// ex);

-		// }

 	}

 

 	/**

-	 * @param odfVersion

-	 *            parsed from the manifest

+	 * @param odfVersion parsed from the manifest

 	 */

 	void setManifestVersion(String odfVersion) {

 		mManifestVersion = odfVersion;

 	}

 

 	/**

-	 * @return the ODF version found in the manifest. Meant to be used to reuse

-	 *         when the manifest is recreated

+	 * @return the ODF version found in the manifest. Meant to be used to reuse when the manifest is

+	 * recreated

 	 */

 	String getManifestVersion() {

 		return mManifestVersion;

diff --git a/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/OdfPackageDocument.java b/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/OdfPackageDocument.java
index bf11a3c..b44e790 100644
--- a/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/OdfPackageDocument.java
+++ b/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/OdfPackageDocument.java
@@ -40,7 +40,6 @@
 import javax.xml.transform.URIResolver;
 import javax.xml.transform.sax.SAXSource;
 import javax.xml.transform.stream.StreamResult;
-import org.odftoolkit.odfdom.dom.OdfSchemaDocument;
 import org.odftoolkit.odfdom.pkg.rdfa.Util;
 import org.xml.sax.EntityResolver;
 import org.xml.sax.InputSource;
@@ -308,6 +307,7 @@
 	 */
 	public void insertDocument(OdfPackageDocument newDocument, String documentPath) {
 		newDocument.flushDoms();
+		// if the existing document already has a subdirtory if had to be added to the absolute
 		mPackage.insertDocument(newDocument, mDocumentPathInPackage + documentPath);
 	}
 
@@ -380,7 +380,7 @@
 
 	/**
 	 * Extracts RDF Metadata triple from XML files
-	 * 
+	 *
 	 * @param internalPath path to the XML file relative to package root
 	 * @return RDF Metadata through GRDDL XSLT of given XML file
 	 */
diff --git a/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/manifest/OdfFileEntry.java b/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/manifest/OdfFileEntry.java
index 30d336d..e51a4ea 100644
--- a/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/manifest/OdfFileEntry.java
+++ b/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/manifest/OdfFileEntry.java
@@ -1,20 +1,20 @@
 /************************************************************************
  *
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER
- * 
+ *
  * Copyright 2008, 2010 Oracle and/or its affiliates. All rights reserved.
- * 
+ *
  * Use is subject to license terms.
- * 
+ *
  * 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. You can also
  * obtain a copy of the License at http://odftoolkit.org/docs/license.txt
- * 
+ *
  * 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.
  *
@@ -24,7 +24,6 @@
 import java.lang.reflect.Method;
 import java.util.HashMap;
 import java.util.Map;
-
 import org.odftoolkit.odfdom.pkg.OdfElement;
 
 public class OdfFileEntry {
@@ -66,6 +65,10 @@
 		mFileEntryElement = fileEntryElement;
 	}
 
+	public OdfFileEntry getCopy(){
+		return new OdfFileEntry((FileEntryElement) this.mFileEntryElement.cloneNode(true));
+	}
+
 	public void setPath(String path) {
 		mFileEntryElement.setFullPathAttribute(path);
 	}
@@ -97,10 +100,10 @@
 
 	/**
 	 * Get the media type from the given file reference
-	 * 
+	 *
 	 * @param fileRef
 	 *            the reference to the file the media type is questioned
-	 * 
+	 *
 	 * @return the mediaType string of the given file reference
 	 */
 	public static String getMediaTypeString(String fileRef) {
@@ -160,7 +163,7 @@
 
 	/**
 	 * Gets the OdfElement of this OdfFileEntry.
-	 * 
+	 *
 	 * @return the OdfElement of this OdfFileEntry.
 	 */
 	public FileEntryElement getOdfElement() {
diff --git a/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/rdfa/Util.java b/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/rdfa/Util.java
index 4381fbd..f554348 100644
--- a/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/rdfa/Util.java
+++ b/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/rdfa/Util.java
@@ -1,20 +1,20 @@
 /************************************************************************

  *

  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER

- * 

+ *

  * Copyright 2008, 2010 Oracle and/or its affiliates. All rights reserved.

- * 

+ *

  * Use is subject to license terms.

- * 

+ *

  * 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. You can also

  * obtain a copy of the License at http://odftoolkit.org/docs/license.txt

- * 

+ *

  * 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.

  *

@@ -23,19 +23,20 @@
 

 import java.net.URI;

 import java.net.URISyntaxException;

-

+import java.util.logging.Level;

+import java.util.logging.Logger;

 import javax.xml.XMLConstants;

 import javax.xml.namespace.QName;

 

 public class Util {

-	

+

 	private static final String SLASH = "/";

-	

+

 	/**

 	 * Test whether two QNames are equal to each other. This is a bug fix for

 	 * java-rdfa library. "xhtml:about" and "about" should be considered as

 	 * RDFa, while java-rdfa recognizes only the later one.

-	 * 

+	 *

 	 * @param at

 	 *            , the QName of an Attribute

 	 * @param name

@@ -52,11 +53,11 @@
 		}

 		return false;

 	}

-	

+

 	/**

 	 * Get the RDF base uri of the given internalPath. Note that there would be

 	 * a SLASH at the end of the RDF base uri

-	 * 

+	 *

 	 * @param pkgBaseUri

 	 *            , the base uri of the package

 	 * @param internalPath

@@ -68,10 +69,10 @@
 		String baseUri = pkgBaseUri + subDirectory + SLASH;

 		return baseUri;

 	}

-	

+

 	/**

 	 * To test whether the subPath is a sut path of superPath

-	 * 

+	 *

 	 * @param subPath

 	 *            , an internal path in the ODF package

 	 * @param superPath

@@ -84,15 +85,15 @@
 		}

 		return SLASH.equals(superPath) || (subPath.length() > superPath.length() && subPath.startsWith(superPath));

 	}

-	

+

 	/**

 	 * To fix the 3 slashes bug for File URI: For example:

 	 * file:/C:/work/test.txt -> file:///C:/work/test.txt

-	 * 

+	 *

 	 * @param u - the File URI

 	 * @return the String of the URI

 	 */

-	public static String toExternalForm(URI u) throws URISyntaxException {

+	public static String toExternalForm(URI u)  {

 		StringBuilder sb = new StringBuilder();

 		if (u.getScheme() != null) {

 			sb.append(u.getScheme());

@@ -133,8 +134,13 @@
 		if (u.getFragment() != null) {

 			sb.append('#');

 			sb.append(u.getFragment());

-		}		

-		String ret = new URI(sb.toString()).toASCIIString();

+		}

+		String ret = null;

+        try {

+            ret = new URI(sb.toString()).toASCIIString();

+        } catch (URISyntaxException ex) {

+            Logger.getLogger(Util.class.getName()).log(Level.SEVERE, null, ex);

+        }

 		return ret;

 	}

 }

diff --git a/odfdom/src/test/java/org/odftoolkit/odfdom/doc/DocumentCreationTest.java b/odfdom/src/test/java/org/odftoolkit/odfdom/doc/DocumentCreationTest.java
index 46e0d60..1062b4c 100644
--- a/odfdom/src/test/java/org/odftoolkit/odfdom/doc/DocumentCreationTest.java
+++ b/odfdom/src/test/java/org/odftoolkit/odfdom/doc/DocumentCreationTest.java
@@ -1,20 +1,20 @@
 /************************************************************************

  *

  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER

- * 

+ *

  * Copyright 2008, 2010 Oracle and/or its affiliates. All rights reserved.

- * 

+ *

  * Use is subject to license terms.

- * 

+ *

  * 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. You can also

  * obtain a copy of the License at http://odftoolkit.org/docs/license.txt

- * 

+ *

  * 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.

  *

@@ -24,10 +24,8 @@
 import java.util.Map;

 import java.util.logging.Level;

 import java.util.logging.Logger;

-

 import javax.xml.xpath.XPath;

 import javax.xml.xpath.XPathConstants;

-

 import org.junit.Assert;

 import org.junit.Test;

 import org.junit.runner.RunWith;

@@ -63,7 +61,7 @@
 	private static final String TEST_FILE_FOLDER = ResourceUtilities.getTestOutputFolder();

 	private static final String TEST_FILE_EMBEDDED = TEST_FILE_FOLDER + "testEmbeddedDoc.odt";

 	private static final String TEST_PIC = "testA.jpg";

-	// Changed leading space against character as leading space have to be <text:s/> element in ODF, see http://docs.oasis-open.org/office/v1.2/os/OpenDocument-v1.2-os-part1.html#White-space_Characters 

+	// Changed leading space against character as leading space have to be <text:s/> element in ODF, see http://docs.oasis-open.org/office/v1.2/os/OpenDocument-v1.2-os-part1.html#White-space_Characters

 	private static final String TEST_SPAN_TEXT = "*Find Truth!!!";

 	private static final String TEST_FILE_ACCESS_EMBEDDED = TEST_FILE_FOLDER + "TestAccess_EmbeddedDocument.odt";

 	private static final String TEST_FILE_EMBEDDED_EMBEDDED = TEST_FILE_FOLDER + "TestAccess_EmbeddedinEmbedded.odt";

@@ -163,7 +161,6 @@
 	public void _2_createEmbeddedDocs() {

 		try {

 			OdfTextDocument odtDoc1 = OdfTextDocument.newTextDocument();

-

 			odtDoc1.insertDocument(OdfTextDocument.newTextDocument(), "Object1/");

 			odtDoc1.insertDocument(OdfTextDocument.newTextDocument(), "Object2/");

 			odtDoc1.insertDocument(OdfDocument.loadDocument(ResourceUtilities.getAbsolutePath("TestEmpty_OdfGraphicsDocument.odg")), "Object3");

@@ -295,7 +292,7 @@
 			addFrameForEmbeddedDoc(contentDom, lastPara, "Object in Object1");

 			Map<String, OdfDocument> emb_embDocs = embDoc.loadSubDocuments();

 			Assert.assertEquals(embDocsNumber + 1, emb_embDocs.size());

-			

+

 			OdfDocument emb_embDoc = rootDocument.loadSubDocument(embDoc.getDocumentPath()+ pathOfSecondInnerDoc);

 			contentDom = emb_embDoc.getContentDom();

 			TextPElement para = (TextPElement) xpath.evaluate("//text:p[1]", contentDom, XPathConstants.NODE);

@@ -397,7 +394,7 @@
 					Assert.assertNotNull(span4);

 					Assert.assertEquals(span4.getTextContent(), TEST_SPAN_TEXT);

 				}

-			}			

+			}

 		} catch (Exception ex) {

 			Logger.getLogger(DocumentCreationTest.class.getName()).log(Level.SEVERE, null, ex);

 			Assert.fail("Failed with " + ex.getClass().getName() + ": '" + ex.getMessage() + "'");

diff --git a/odfdom/src/test/java/org/odftoolkit/odfdom/doc/ImageTest.java b/odfdom/src/test/java/org/odftoolkit/odfdom/doc/ImageTest.java
index 291207f..78e9266 100644
--- a/odfdom/src/test/java/org/odftoolkit/odfdom/doc/ImageTest.java
+++ b/odfdom/src/test/java/org/odftoolkit/odfdom/doc/ImageTest.java
@@ -1,39 +1,32 @@
 /************************************************************************
  *
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER
- * 
+ *
  * Copyright 2008, 2010 Oracle and/or its affiliates. All rights reserved.
- * 
+ *
  * Use is subject to license terms.
- * 
+ *
  * 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. You can also
  * obtain a copy of the License at http://odftoolkit.org/docs/license.txt
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
  * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * 
+ *
  * See the License for the specific language governing permissions and
  * limitations under the License.
  *
  ************************************************************************/
 package org.odftoolkit.odfdom.doc;
 
-import static org.odftoolkit.odfdom.incubator.doc.draw.OdfDrawImage.deleteImage;
-import static org.odftoolkit.odfdom.incubator.doc.draw.OdfDrawImage.deleteImageByPath;
-import static org.odftoolkit.odfdom.incubator.doc.draw.OdfDrawImage.getImageByPath;
-import static org.odftoolkit.odfdom.incubator.doc.draw.OdfDrawImage.getImageCount;
-import static org.odftoolkit.odfdom.incubator.doc.draw.OdfDrawImage.getImagePathSet;
-
 import java.net.URI;
 import java.net.URISyntaxException;
 import java.util.List;
 import java.util.Set;
 import java.util.logging.Level;
 import java.util.logging.Logger;
-
 import org.junit.Assert;
 import org.junit.Test;
 import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
@@ -41,6 +34,11 @@
 import org.odftoolkit.odfdom.dom.element.office.OfficeTextElement;
 import org.odftoolkit.odfdom.incubator.doc.draw.OdfDrawFrame;
 import org.odftoolkit.odfdom.incubator.doc.draw.OdfDrawImage;
+import static org.odftoolkit.odfdom.incubator.doc.draw.OdfDrawImage.deleteImage;
+import static org.odftoolkit.odfdom.incubator.doc.draw.OdfDrawImage.deleteImageByPath;
+import static org.odftoolkit.odfdom.incubator.doc.draw.OdfDrawImage.getImageByPath;
+import static org.odftoolkit.odfdom.incubator.doc.draw.OdfDrawImage.getImageCount;
+import static org.odftoolkit.odfdom.incubator.doc.draw.OdfDrawImage.getImagePathSet;
 import org.odftoolkit.odfdom.incubator.doc.text.OdfTextParagraph;
 import org.odftoolkit.odfdom.pkg.OdfPackage;
 import org.odftoolkit.odfdom.utils.NodeAction;
@@ -80,9 +78,9 @@
 						try {
 							String packagePath = img.newImage(mImageUri_ODFDOM);
 							if (packagePath == null || !pkg.contains(packagePath)) {
-								Assert.fail("The folloing image could not be embedded:" + mImageUri_ODFDOM.toString());
+								Assert.fail("The following image could not be embedded:" + mImageUri_ODFDOM.toString());
 							} else if (!packagePath.equals(mPackageGraphicsPath + mImageName_ODFDOM)) {
-								Assert.fail("Instead of '" + mPackageGraphicsPath + mImageName_ODFDOM + "' the folloing image path was returned: '" + packagePath + "'");
+								Assert.fail("Instead of '" + mPackageGraphicsPath + mImageName_ODFDOM + "' the following image path was returned: '" + packagePath + "'");
 							}
 						} catch (Exception ex) {
 							Logger.getLogger(ImageTest.class.getName()).log(
@@ -93,7 +91,7 @@
 				}
 			};
 			addImages.performAction(doc.getContentDom().getDocumentElement(),
-					null);			
+					null);
 			doc.save(ResourceUtilities.getTestOutput("add-images-by-uri.odt"));
 
 		} catch (Exception e) {
@@ -199,6 +197,8 @@
 	@Test
 	public void testRemoveAllImage() {
 		try {
+			// this test is dependent of the output of the following test, which is therefore being called explicitly
+            testImageInTextDocument();
 			OdfTextDocument doc = (OdfTextDocument) OdfDocument.loadDocument(ResourceUtilities.getAbsolutePath("addimages.odt"));
 
 			Set<String> pathSet = getImagePathSet(doc);
diff --git a/simple/pom.xml b/simple/pom.xml
index 8ab9e80..75c9e80 100644
--- a/simple/pom.xml
+++ b/simple/pom.xml
@@ -140,7 +140,7 @@
             </plugin>
             <plugin>
                 <artifactId>maven-surefire-plugin</artifactId>
-                <version>2.6</version>
+                <version>2.15</version>
                 <configuration>
                     <systemPropertyVariables>
                         <simple.version>${project.version}</simple.version>
diff --git a/simple/src/main/java/org/odftoolkit/simple/Document.java b/simple/src/main/java/org/odftoolkit/simple/Document.java
index 29151d0..49e3534 100644
--- a/simple/src/main/java/org/odftoolkit/simple/Document.java
+++ b/simple/src/main/java/org/odftoolkit/simple/Document.java
@@ -45,13 +45,11 @@
 import java.util.regex.Pattern;
 import java.util.zip.ZipEntry;
 import java.util.zip.ZipInputStream;
-
 import javax.xml.datatype.DatatypeConfigurationException;
 import javax.xml.datatype.DatatypeFactory;
 import javax.xml.xpath.XPath;
 import javax.xml.xpath.XPathConstants;
 import javax.xml.xpath.XPathExpressionException;
-
 import org.odftoolkit.odfdom.dom.OdfContentDom;
 import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
 import org.odftoolkit.odfdom.dom.OdfSchemaConstraint;
@@ -88,12 +86,12 @@
 import org.odftoolkit.odfdom.pkg.manifest.OdfFileEntry;
 import org.odftoolkit.odfdom.type.Duration;
 import org.odftoolkit.simple.meta.Meta;
-import org.odftoolkit.simple.table.TableTemplate;
 import org.odftoolkit.simple.table.AbstractTableContainer;
 import org.odftoolkit.simple.table.Cell;
 import org.odftoolkit.simple.table.Table;
 import org.odftoolkit.simple.table.Table.TableBuilder;
 import org.odftoolkit.simple.table.TableContainer;
+import org.odftoolkit.simple.table.TableTemplate;
 import org.odftoolkit.simple.text.Paragraph;
 import org.odftoolkit.simple.text.Section;
 import org.w3c.dom.Attr;
@@ -157,22 +155,22 @@
 	 */
 	public enum OdfMediaType implements MediaType {
 
-		CHART("application/vnd.oasis.opendocument.chart", "odc"), 
-		CHART_TEMPLATE("application/vnd.oasis.opendocument.chart-template", "otc"), 
-		FORMULA("application/vnd.oasis.opendocument.formula", "odf"), 
-		FORMULA_TEMPLATE("application/vnd.oasis.opendocument.formula-template", "otf"), 
-		DATABASE_FRONT_END("application/vnd.oasis.opendocument.base", "odb"), 
-		GRAPHICS("application/vnd.oasis.opendocument.graphics", "odg"), 
-		GRAPHICS_TEMPLATE("application/vnd.oasis.opendocument.graphics-template", "otg"), 
-		IMAGE("application/vnd.oasis.opendocument.image", "odi"), 
-		IMAGE_TEMPLATE("application/vnd.oasis.opendocument.image-template", "oti"), 
-		PRESENTATION("application/vnd.oasis.opendocument.presentation", "odp"), 
-		PRESENTATION_TEMPLATE("application/vnd.oasis.opendocument.presentation-template", "otp"), 
-		SPREADSHEET("application/vnd.oasis.opendocument.spreadsheet", "ods"), 
-		SPREADSHEET_TEMPLATE("application/vnd.oasis.opendocument.spreadsheet-template", "ots"), 
-		TEXT("application/vnd.oasis.opendocument.text", "odt"), 
-		TEXT_MASTER("application/vnd.oasis.opendocument.text-master", "odm"), 
-		TEXT_TEMPLATE("application/vnd.oasis.opendocument.text-template", "ott"), 
+		CHART("application/vnd.oasis.opendocument.chart", "odc"),
+		CHART_TEMPLATE("application/vnd.oasis.opendocument.chart-template", "otc"),
+		FORMULA("application/vnd.oasis.opendocument.formula", "odf"),
+		FORMULA_TEMPLATE("application/vnd.oasis.opendocument.formula-template", "otf"),
+		DATABASE_FRONT_END("application/vnd.oasis.opendocument.base", "odb"),
+		GRAPHICS("application/vnd.oasis.opendocument.graphics", "odg"),
+		GRAPHICS_TEMPLATE("application/vnd.oasis.opendocument.graphics-template", "otg"),
+		IMAGE("application/vnd.oasis.opendocument.image", "odi"),
+		IMAGE_TEMPLATE("application/vnd.oasis.opendocument.image-template", "oti"),
+		PRESENTATION("application/vnd.oasis.opendocument.presentation", "odp"),
+		PRESENTATION_TEMPLATE("application/vnd.oasis.opendocument.presentation-template", "otp"),
+		SPREADSHEET("application/vnd.oasis.opendocument.spreadsheet", "ods"),
+		SPREADSHEET_TEMPLATE("application/vnd.oasis.opendocument.spreadsheet-template", "ots"),
+		TEXT("application/vnd.oasis.opendocument.text", "odt"),
+		TEXT_MASTER("application/vnd.oasis.opendocument.text-master", "odm"),
+		TEXT_TEMPLATE("application/vnd.oasis.opendocument.text-template", "ott"),
 		TEXT_WEB("application/vnd.oasis.opendocument.text-web", "oth");
 
 		private final String mMediaType;
@@ -198,7 +196,7 @@
 		}
 
 		/**
-		 * 
+		 *
 		 * @param mediaType
 		 *            string defining an ODF document
 		 * @return the according OdfMediatype encapuslating the given string and
@@ -222,7 +220,7 @@
 	/**
 	 * Loads an Document from the given resource. NOTE: Initial meta data will
 	 * be added in this method.
-	 * 
+	 *
 	 * @param res
 	 *            a resource containing a package with a root document
 	 * @param odfMediaType
@@ -248,12 +246,12 @@
 
 	/**
 	 * Loads a Document from the provided path.
-	 * 
+	 *
 	 * <p>
 	 * Document relies on the file being available for read access over the
 	 * whole life cycle of Document.
 	 * </p>
-	 * 
+	 *
 	 * @param documentPath
 	 *            - the path from where the document can be loaded
 	 * @param password
@@ -271,12 +269,12 @@
 
 	/**
 	 * Loads a Document from the provided path.
-	 * 
+	 *
 	 * <p>
 	 * Document relies on the file being available for read access over the
 	 * whole life cycle of Document.
 	 * </p>
-	 * 
+	 *
 	 * @param documentPath
 	 *            - the path from where the document can be loaded
 	 * @return the Document from the given path or NULL if the media type is not
@@ -291,7 +289,7 @@
 
 	/**
 	 * Creates a Document from the Document provided by a resource Stream.
-	 * 
+	 *
 	 * <p>
 	 * Since an InputStream does not provide the arbitrary (non sequentiell)
 	 * read access needed by Document, the InputStream is cached. This usually
@@ -299,7 +297,7 @@
 	 * advantage of caching is that there are no problems overwriting an input
 	 * file.
 	 * </p>
-	 * 
+	 *
 	 * @param inStream
 	 *            - the InputStream of the ODF document.
 	 * @return the document created from the given InputStream
@@ -312,12 +310,12 @@
 
 	/**
 	 * Creates a Document from the Document provided by a File.
-	 * 
+	 *
 	 * <p>
 	 * Document relies on the file being available for read access over the
 	 * whole lifecycle of Document.
 	 * </p>
-	 * 
+	 *
 	 * @param file
 	 *            - a file representing the ODF document.
 	 * @return the document created from the given File
@@ -332,12 +330,12 @@
 
 	/**
 	 * Creates a Document from the Document provided by a File.
-	 * 
+	 *
 	 * <p>
 	 * Document relies on the file being available for read access over the
 	 * whole lifecycle of Document.
 	 * </p>
-	 * 
+	 *
 	 * @param file
 	 *            - a file representing the ODF document.
 	 * @param password
@@ -355,7 +353,7 @@
 
 	/**
 	 * Creates a Document from the Document provided by an ODF package.
-	 * 
+	 *
 	 * @param odfPackage
 	 *            - the ODF package containing the ODF document.
 	 * @return the root document of the given OdfPackage
@@ -368,7 +366,7 @@
 
 	/**
 	 * Creates a Document from the Document provided by an ODF package.
-	 * 
+	 *
 	 * @param odfPackage
 	 *            - the ODF package containing the ODF document.
 	 * @param internalPath
@@ -400,7 +398,7 @@
 
 	/**
 	 * Sets password of this document.
-	 * 
+	 *
 	 * @param password
 	 *            the password of this document.
 	 * @since 0.8
@@ -472,7 +470,7 @@
 
 	/**
 	 * Creates one of the ODF documents based a given mediatype.
-	 * 
+	 *
 	 * @param odfMediaType
 	 *            The ODF Mediatype of the ODF document to be created.
 	 * @return The ODF document, which mediatype dependends on the parameter or
@@ -541,7 +539,7 @@
 
 	/**
 	 * Returns an embedded OdfPackageDocument from the given package path.
-	 * 
+	 *
 	 * @param documentPath
 	 *            path to the ODF document within the package. The path is
 	 *            relative to the current document.
@@ -577,7 +575,7 @@
 	/**
 	 * Method returns all embedded OdfPackageDocuments, which match a valid
 	 * OdfMediaType, of the root OdfPackageDocument.
-	 * 
+	 *
 	 * @return a list with all embedded documents of the root OdfPackageDocument
 	 */
 	// ToDo: (Issue 219 - PackageRefactoring) - Better return Path of
@@ -599,7 +597,7 @@
 	 * OdfPackageDocument matching the according MediaType. This is done by
 	 * matching the subfolder entries of the manifest file with the given
 	 * OdfMediaType.
-	 * 
+	 *
 	 * @param mediaType
 	 *            media type which is used as a filter
 	 * @return embedded documents of the root OdfPackageDocument matching the
@@ -644,7 +642,7 @@
 	 * Embed an OdfPackageDocument to the current OdfPackageDocument. All the
 	 * file entries of child document will be embedded as well to the current
 	 * document package.
-	 * 
+	 *
 	 * @param documentPath
 	 *            to the directory the ODF document should be inserted (relative
 	 *            to the current document).
@@ -657,7 +655,7 @@
 
 	/**
 	 * Sets the media type of the Document
-	 * 
+	 *
 	 * @param odfMediaType
 	 *            media type to be set
 	 */
@@ -675,7 +673,7 @@
 
 	/**
 	 * Get the meta data feature instance of the current document
-	 * 
+	 *
 	 * @return the meta data feature instance which represent
 	 *         <code>office:meta</code> in the meta.xml
 	 */
@@ -693,17 +691,17 @@
 	/**
 	 * Save the document to an OutputStream. Delegate to the root document and
 	 * save possible embedded Documents.
-	 * 
+	 *
 	 * <p>
 	 * If the input file has been cached (this is the case when loading from an
 	 * InputStream), the input file can be overwritten.
 	 * </p>
-	 * 
+	 *
 	 * <p>
 	 * If not, the OutputStream may not point to the input file! Otherwise this
 	 * will result in unwanted behaviour and broken files.
 	 * </p>
-	 * 
+	 *
 	 * <p>
 	 * When save the embedded document to a stand alone document, all the file
 	 * entries of the embedded document will be copied to a new document
@@ -711,7 +709,7 @@
 	 * directory, you have to embed it to the sub directory and refresh the link
 	 * of the embedded document. you should reload it from the stream to get the
 	 * saved embedded document.
-	 * 
+	 *
 	 * @param out
 	 *            - the OutputStream to write the file to
 	 * @throws java.lang.Exception
@@ -741,19 +739,19 @@
 
 	/**
 	 * Save the document to a given file.
-	 * 
+	 *
 	 * <p>
 	 * If the input file has been cached (this is the case when loading from an
 	 * InputStream), the input file can be overwritten.
 	 * </p>
-	 * 
+	 *
 	 * <p>
 	 * Otherwise it's allowed to overwrite the input file as long as the same
 	 * path name is used that was used for loading (no symbolic link foo2.odt
 	 * pointing to the loaded file foo1.odt, no network path X:\foo.odt pointing
 	 * to the loaded file D:\foo.odt).
 	 * </p>
-	 * 
+	 *
 	 * <p>
 	 * When saving the embedded document to a stand alone document, all files of
 	 * the embedded document will be copied to a new document package. If the
@@ -761,7 +759,7 @@
 	 * to embed it to the sub directory and refresh the link of the embedded
 	 * document. You should reload it from the given file to get the saved
 	 * embedded document.
-	 * 
+	 *
 	 * @param file
 	 *            - the file to save the document
 	 * @throws java.lang.Exception
@@ -787,19 +785,19 @@
 
 	/**
 	 * Save the document to a given file with given password.
-	 * 
+	 *
 	 * <p>
 	 * If the input file has been cached (this is the case when loading from an
 	 * InputStream), the input file can be overwritten.
 	 * </p>
-	 * 
+	 *
 	 * <p>
 	 * Otherwise it's allowed to overwrite the input file as long as the same
 	 * path name is used that was used for loading (no symbolic link foo2.odt
 	 * pointing to the loaded file foo1.odt, no network path X:\foo.odt pointing
 	 * to the loaded file D:\foo.odt).
 	 * </p>
-	 * 
+	 *
 	 * <p>
 	 * When saving the embedded document to a stand alone document, all files of
 	 * the embedded document will be copied to a new document package. If the
@@ -807,12 +805,12 @@
 	 * to embed it to the sub directory and refresh the link of the embedded
 	 * document. You should reload it from the given file to get the saved
 	 * embedded document.
-	 * 
+	 *
 	 * @param file
 	 *            the file to save the document.
 	 * @param file
 	 *            the password of this document.
-	 * 
+	 *
 	 * @throws java.lang.Exception
 	 *             if the document could not be saved
 	 * @since 0.8
@@ -854,11 +852,11 @@
 
 	/**
 	 * Get the content root of a document.
-	 * 
+	 *
 	 * You may prefer to use the getContentRoot methods of subclasses of
 	 * Document. Their return parameters are already casted to respective
 	 * subclasses of OdfElement.
-	 * 
+	 *
 	 * @param clazz
 	 *            the type of the content root, depend on the document type
 	 * @return the child element of office:body, e.g. office:text for text docs
@@ -881,10 +879,10 @@
 
 	/**
 	 * Get the content root of a document.
-	 * 
+	 *
 	 * You may prefer to use the getContentRoot methods of subclasses of
 	 * Document.
-	 * 
+	 *
 	 * @return the child element of office:body, e.g. office:text for text docs
 	 * @throws Exception
 	 *             if the file DOM could not be created.
@@ -900,7 +898,7 @@
 
 	/**
 	 * Insert an Image from the specified uri to the end of the Document.
-	 * 
+	 *
 	 * @param imageUri
 	 *            The URI of the image that will be added to the document, add
 	 *            image stream to the package, in the 'Pictures/' graphic
@@ -950,10 +948,10 @@
 	 * <li>The number of times this document has been edited.</li>
 	 * <li>The default language will be the Java user.language System property.</li>
 	 * </ul>
-	 * 
+	 *
 	 * @param newDoc
 	 *            the Document object which need to initialize meta data.
-	 * 
+	 *
 	 *            TODO:This method will be moved to OdfMetadata class. see
 	 *            http://odftoolkit.org/bugzilla/show_bug.cgi?id=204
 	 */
@@ -986,10 +984,10 @@
 	 * </li>
 	 * <li>The total time spent editing this document</li>
 	 * </ul>
-	 * 
+	 *
 	 * TODO:This method will be moved to OdfMetadata class. see
 	 * http://odftoolkit.org/bugzilla/show_bug.cgi?id=204
-	 * 
+	 *
 	 * @throws Exception
 	 */
 	private void updateMetaData() throws Exception {
@@ -1028,16 +1026,16 @@
 	 * <p>
 	 * Unicode characters are in general divided by office applications into
 	 * three different types:
-	 * 
+	 *
 	 * <p>
 	 * 1) There is CJK: the Chinese, Japanese and Korean script (also old
 	 * Vietnamese belong to this group). See
 	 * http://en.wikipedia.org/wiki/CJK_characters
-	 * 
+	 *
 	 * <p>
 	 * 2) There is CTL: Complex Text Layout, which uses BIDI algorithms and/or
 	 * glyph modules. See http://en.wikipedia.org/wiki/Complex_Text_Layout
-	 * 
+	 *
 	 * <p>
 	 * 3) And there is all the rest, which was once called by MS Western.
 	 */
@@ -1110,7 +1108,7 @@
 	 * The locale information will affect the language and country setting of
 	 * the document. Thus the font settings, the spell checkings and etc will be
 	 * affected.
-	 * 
+	 *
 	 * @param locale
 	 *            - an instance of Locale
 	 */
@@ -1133,7 +1131,7 @@
 	 * Set a locale of a specific script type.
 	 * <p>
 	 * If the locale is not belone to the script type, nothing will happen.
-	 * 
+	 *
 	 * @param locale
 	 *            - Locale information
 	 * @param scriptType
@@ -1160,7 +1158,7 @@
 	/**
 	 * <p>
 	 * Get a locale information of a specific script type.
-	 * 
+	 *
 	 * @param scriptType
 	 *            - The script type
 	 * @return the Locale information
@@ -1184,7 +1182,7 @@
 	/**
 	 * This method will set the default language and country information of the
 	 * document, based on the parameter of the Locale information.
-	 * 
+	 *
 	 * @param locale
 	 *            - an instance of Locale that the default language and country
 	 *            will be set to.
@@ -1241,7 +1239,7 @@
 	/**
 	 * This method will return an instance of Locale, which presents the default
 	 * language and country information settings in this document.
-	 * 
+	 *
 	 * @return an instance of Locale that the default language and country is
 	 *         set to.
 	 */
@@ -1251,7 +1249,7 @@
 	 * of the document, based on the parameter of the Locale information. If the
 	 * Locale instance is not set a Asian language (Chinese, Traditional
 	 * Chinese, Japanese and Korean, nothing will take effect.
-	 * 
+	 *
 	 * @param locale
 	 *            - an instance of Locale that the default Asian language and
 	 *            country will be set to.
@@ -1282,7 +1280,7 @@
 	/**
 	 * This method will set the default complex language and country information
 	 * of the document, based on the parameter of the Locale information.
-	 * 
+	 *
 	 * @param locale
 	 *            - an instance of Locale that the default complex language and
 	 *            country will be set to.
@@ -1310,7 +1308,7 @@
 	 * return an iterator of section objects.
 	 * <p>
 	 * The sections defined in embed document won't be covered.
-	 * 
+	 *
 	 * @return an iterator of Section objects
 	 */
 	public Iterator<Section> getSectionIterator() {
@@ -1348,7 +1346,7 @@
 	 * This method won't search in the embed document.
 	 * <p>
 	 * Null will be returned if there is no section found.
-	 * 
+	 *
 	 * @param name
 	 *            - the name of a section
 	 * @return a section object with a specific name
@@ -1384,7 +1382,7 @@
 	/**
 	 * Remove an ODF element from the document. All the resources that are only
 	 * related with this element will be removed at the same time.
-	 * 
+	 *
 	 * @param odfElement
 	 *            - the odf element that would be moved.
 	 */
@@ -1397,7 +1395,7 @@
 	/**
 	 * Return a unique string with a character "a" followed by randomly
 	 * generating 6 hex numbers
-	 * 
+	 *
 	 * @return a unique string
 	 */
 	String makeUniqueName() {
@@ -1425,7 +1423,7 @@
 	/**
 	 * Make a content copy of the specified element, and the returned element
 	 * should have the specified ownerDocument.
-	 * 
+	 *
 	 * @param element
 	 *            The element that need to be copied
 	 * @param dom
@@ -1448,11 +1446,11 @@
 					String prefix = item.getPrefix();
 					if (prefix == null) {
 						qname = item.getLocalName();
+						cloneElement.setAttribute(qname, item.getNodeValue());
 					} else {
 						qname = prefix + ":" + item.getLocalName();
+						cloneElement.setAttributeNS(item.getNamespaceURI(), qname, item.getNodeValue());
 					}
-
-					cloneElement.setAttributeNS(item.getNamespaceURI(), qname, item.getNodeValue());
 				}
 			}
 
@@ -1477,7 +1475,7 @@
 	 * <p>
 	 * This method is usually be invoked before inserting a copied ODF element
 	 * to document content.
-	 * 
+	 *
 	 * @param element
 	 *            - the element that need to be inserted.
 	 */
@@ -1506,7 +1504,7 @@
 	 * <p>
 	 * This method is usually be invoked before inserting a copied ODF element
 	 * to document content.
-	 * 
+	 *
 	 * @param element
 	 *            - the element that need to be inserted.
 	 */
@@ -1547,7 +1545,7 @@
 	 * the name of the resource will be renamed.
 	 * <p>
 	 * This method will copy resources all in one batch.
-	 * 
+	 *
 	 * @param sourceCloneEle
 	 *            - the element that need to be copied
 	 * @param srcDocument
@@ -1555,7 +1553,7 @@
 	 */
 	void copyLinkedRefInBatch(OdfElement sourceCloneEle, Document srcDocument) {
 		try {
-			OdfFileDom fileDom = (OdfFileDom) sourceCloneEle.getOwnerDocument();
+   			OdfFileDom fileDom = (OdfFileDom) sourceCloneEle.getOwnerDocument();
 			XPath xpath;
 			if (fileDom instanceof OdfContentDom) {
 				xpath = ((OdfContentDom) fileDom).getXPath();
@@ -1601,7 +1599,6 @@
 					if (fileEntry == null) {
 						fileEntry = getPackage().getFileEntry(refObjPath + "/");
 					}
-					newObjPath = refObjPath;
 					if (fileEntry != null) {
 						// rename the object path
 						newObjPath = objectRenameMap.get(refObjPath);
@@ -1774,11 +1771,11 @@
 	 * loaded from a file, a good performance method will be used. If the source
 	 * document is loaded from a input stream, package layer methods will be
 	 * invoked to copy these resources, with bad performance.
-	 * 
+	 *
 	 * In future, the code of this method will move to ODFDOM package layer.
 	 * Till then, good performance will be gotten whether the source document is
 	 * loaded from file or from input stream.
-	 * 
+	 *
 	 */
 	void copyResourcesFrom(Document srcDoc, HashMap<String, String> objectRenameMap) throws Exception {
 		if (srcDoc.getFile() != null) {
@@ -1823,7 +1820,7 @@
 				InputStream is = srcDoc.getPackage().getInputStream(refObjPath);
 				if (is != null) {
 					String mediaType = srcDoc.getPackage().getFileEntry(refObjPath).getMediaTypeString();
-					getPackage().insert(is, newObjPath, mediaType);
+                    getPackage().insert(is, newObjPath, mediaType);
 				} else {
 					Document embedDoc = ((Document) srcDoc).getEmbeddedDocument(refObjPath);
 					if (embedDoc != null) {
@@ -1840,7 +1837,7 @@
 	 * <p>
 	 * If the target package contains a resource with the same path and name,
 	 * the name of the resource will be renamed.
-	 * 
+	 *
 	 * @param sourceCloneEle
 	 *            - the element that need to be copied
 	 */
@@ -1929,7 +1926,7 @@
 	/**
 	 * When a element needs to be copied to a different document, all the style
 	 * definitions that are related with this element need to be copied.
-	 * 
+	 *
 	 * @param sourceCloneEle
 	 *            - the element that need to be copied
 	 * @param srcDoc
@@ -2331,7 +2328,7 @@
 	/**
 	 * This method will delete all the linked resources that are only related
 	 * with this element.
-	 * 
+	 *
 	 * @param odfEle
 	 *            - the element to be deleted.
 	 * @return true if successfully delete, or else, false will be returned
@@ -2386,7 +2383,7 @@
 	/**
 	 * This method will delete all the style definitions that are only related
 	 * with this element.
-	 * 
+	 *
 	 * @param odfEle
 	 *            - the element to be deleted.
 	 * @return true if successfully delete, or else, false will be returned
@@ -2503,7 +2500,7 @@
 
 	/**
 	 * Return the component repository of this document.
-	 * 
+	 *
 	 * @return the component repository of this document.
 	 */
 	protected IdentityHashMap<OdfElement, Component> getComponentMap() {
@@ -2512,8 +2509,8 @@
 
 	/**
 	 * Construct a
-	 * 
-	 * 
+	 *
+	 *
 	 * <code>TableTemplate<code> feature by extracting style template from an pre-defined table in a foreign document. The styles loaded by the template will be copied into the document as well and can be referenced by table directly.
 	 * <p>
 	 * The imported table need to be at least a 5*5 table (e.g. A1E5).  Each type of style in the template will be set according to the style reference in a specific table cell, as following:
@@ -2530,7 +2527,7 @@
 	 * <br>first-row-end-column -E1
 	 * <br>last-row-start-column -A5
 	 * <br>last-row-end-column -E5
-	 * 
+	 *
 	 * @param templateFileInputStream
 	 *            - the InputStream of the ODF document.
 	 * @param tableName
@@ -2674,4 +2671,4 @@
 		return template;
 	}
 
-}
+}
\ No newline at end of file
diff --git a/simple/src/test/java/org/odftoolkit/simple/chart/ChartTest.java b/simple/src/test/java/org/odftoolkit/simple/chart/ChartTest.java
index 1e9dd06..2ab6b8c 100644
--- a/simple/src/test/java/org/odftoolkit/simple/chart/ChartTest.java
+++ b/simple/src/test/java/org/odftoolkit/simple/chart/ChartTest.java
@@ -1,4 +1,4 @@
-/* 
+/*
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
 distributed with this work for additional information
@@ -15,25 +15,34 @@
 KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
-*/
-
+ */
 package org.odftoolkit.simple.chart;
 
 import java.awt.Rectangle;
+import java.util.HashMap;
+import java.util.Map;
 import java.util.logging.Level;
 import java.util.logging.Logger;
-
+import javax.xml.xpath.XPath;
+import javax.xml.xpath.XPathConstants;
+import javax.xml.xpath.XPathExpressionException;
 import org.junit.Assert;
 import org.junit.Test;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
 import org.odftoolkit.odfdom.type.CellRangeAddressList;
 import org.odftoolkit.simple.Document;
 import org.odftoolkit.simple.PresentationDocument;
 import org.odftoolkit.simple.SpreadsheetDocument;
 import org.odftoolkit.simple.TextDocument;
 import org.odftoolkit.simple.utils.ResourceUtilities;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
 
 public class ChartTest {
 
+	private static final Logger LOG = Logger.getLogger(ChartTest.class.getName());
+
+	private static final String TEST_SPREADSHEET_WITH_CHART = "SpreadsheetWithChart.ods";
 	private static final String TEST_FILE = "ChartTest.ods";
 	private static final String CHART_FILE1 = "TestCreateChartWithLocalData.ods";
 	private static final String CHART_FILE2 = "TestCreateChartWithCellRange.ods";
@@ -41,15 +50,78 @@
 	private static final String CHART_FILE_ODT = "TestODTChart.odt";
 	private static final String CHART_FILE_ODP = "TestODPChart.odp";
 
+	// NEW OUTPUT DOCS
+	private static final String TEST_SPREADSHEET_WITH_APPENDED_CHART = "SpreadsheetWithAppendedChart.ods";
+
+	@Test
+	public void testCopyChart() {
+		try {
+			SpreadsheetDocument emptySpreadsheetDocument = SpreadsheetDocument.newSpreadsheetDocument();
+			SpreadsheetDocument chartSpreadSheetDocument = (SpreadsheetDocument) Document.loadDocument(ResourceUtilities.getTestResourceAsStream(TEST_SPREADSHEET_WITH_CHART));
+			// Make sure there are no manifest entries duplicates in the beginning..
+			checkManifestEntryDuplication(emptySpreadsheetDocument);
+
+			emptySpreadsheetDocument.appendSheet(chartSpreadSheetDocument.getSheetByIndex(0), "test");
+			// Make sure no duplicate manifest entries are after the insertion of the sheet with its dependencies..
+			checkManifestEntryDuplication(emptySpreadsheetDocument);
+
+			emptySpreadsheetDocument.save(ResourceUtilities.newTestOutputFile(TEST_SPREADSHEET_WITH_APPENDED_CHART));
+			SpreadsheetDocument reloadedSpreadsheetWithChart = (SpreadsheetDocument) Document.loadDocument(ResourceUtilities.newTestOutputFile(TEST_SPREADSHEET_WITH_APPENDED_CHART));
+			// Make sure no duplicate manifest entries are after reload of the document..
+			checkManifestEntryDuplication(reloadedSpreadsheetWithChart);
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, null, e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+	}
+
+	// simply tests the given file path for duplicate
+	private static void checkManifestEntryDuplication(Document testDocument) throws XPathExpressionException {
+		OdfFileDom manifestDom = testDocument.getPackage().getManifestDom();
+		XPath xpath = manifestDom.getXPath();
+		Node manifestRootElement = manifestDom.getRootElement();
+		NodeList manifestEntries = (NodeList) xpath.evaluate("./*/@manifest:full-path", manifestRootElement, XPathConstants.NODESET);
+		Assert.assertNotNull(manifestEntries);
+		Map<String, Integer> entries = new HashMap<String, Integer>();
+		for (int i = 0; i < manifestEntries.getLength(); i++) {
+			String entryName = manifestEntries.item(i).toString();
+			if (!entries.containsKey(entryName)) {
+				entries.put(entryName, 1);
+			} else {
+				int newCount = entries.get(entryName) + 1;
+				entries.put(entryName, newCount);
+			}
+		}
+		boolean duplicated = false;
+		StringBuilder sb = null;
+
+		// check if there are multiple occurances
+		for (String s : entries.keySet()) {
+			if (entries.get(s) > 1) {
+				if (sb == null) {
+					sb = new StringBuilder();
+					sb.append("The following manifest entrie(s) are duplicated:\n");
+				}
+				sb.append("\tThe entry '").append(s).append("' exists ").append(entries.get(s)).append(" times.\n");
+				duplicated = true;
+			}
+		}
+		String errorMsg = "";
+		if (sb != null) {
+			errorMsg = sb.toString();
+		}
+		Assert.assertFalse(errorMsg, duplicated);
+	}
+
 	@Test
 	public void testEquals() {
 		try {
 			SpreadsheetDocument doc = SpreadsheetDocument.newSpreadsheetDocument();
 			String title = "Main";
-			String[] lables = new String[]{"Anna","Daisy","Tony","MingFei"};
-			String[] legends = new String[]{"Day1","Day2","Day3"};
-			double[][] data = new double[][]{{1,2,3},{2,3,4},{3,4,5},{4,5,6}};
-			DataSet dataset = new DataSet(lables,legends,data);
+			String[] lables = new String[]{"Anna", "Daisy", "Tony", "MingFei"};
+			String[] legends = new String[]{"Day1", "Day2", "Day3"};
+			double[][] data = new double[][]{{1, 2, 3}, {2, 3, 4}, {3, 4, 5}, {4, 5, 6}};
+			DataSet dataset = new DataSet(lables, legends, data);
 			Rectangle rect = new Rectangle();
 			rect.x = 67;
 			rect.y = 89;
@@ -63,11 +135,11 @@
 			Assert.assertEquals(dataset, chart.getChartData());
 			Assert.assertEquals("Main", chart.getChartTitle());
 			Assert.assertEquals(ChartType.AREA, chart.getChartType());
-			
-			System.out.println("chart " + chart);
-			
+
+			LOG.info("chart " + chart);
+
 		} catch (Exception e) {
-			Logger.getLogger(DataSetTest.class.getName()).log(Level.SEVERE, null, e);
+			LOG.log(Level.SEVERE, null, e);
 			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
 		}
 	}
@@ -79,9 +151,9 @@
 			doc = SpreadsheetDocument.newSpreadsheetDocument();
 			String title = "LocalData";
 			// double[][] data = new double[3][3];
-			String[] lables = new String[] { "Anna", "Daisy", "Tony", "MingFei" };
-			String[] legends = new String[] { "Day1", "Day2", "Day3" };
-			double[][] data = new double[][] { { 1, 2, 3, 4 }, { 2, 3, 4, 5 }, { 3, 4, 5, 6 } };
+			String[] lables = new String[]{"Anna", "Daisy", "Tony", "MingFei"};
+			String[] legends = new String[]{"Day1", "Day2", "Day3"};
+			double[][] data = new double[][]{{1, 2, 3, 4}, {2, 3, 4, 5}, {3, 4, 5, 6}};
 			Rectangle rect = new Rectangle();
 			rect.x = 2000;
 			rect.y = 2700;
@@ -117,7 +189,7 @@
 			Assert.assertTrue(legends.length == newChart.getChartData().getDataSeriesCount());
 
 		} catch (Exception e) {
-			Logger.getLogger(DataSetTest.class.getName()).log(Level.SEVERE, null, e);
+			LOG.log(Level.SEVERE, null, e);
 			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
 		}
 	}
@@ -126,7 +198,7 @@
 	public void testCreateChartWithCellRange() {
 		try {
 			SpreadsheetDocument doc = (SpreadsheetDocument) Document.loadDocument(ResourceUtilities
-					.getTestResourceAsStream(TEST_FILE));
+				.getTestResourceAsStream(TEST_FILE));
 			String barTitle = "Bar Chart with CellRange ";
 			String areaTitle = "AREA Chart with CellRange";
 			Rectangle rect = new Rectangle();
@@ -143,16 +215,16 @@
 			doc.createChart(barTitle, doc, CellRangeAddressList.valueOf("A.B2:A.E21"), false, false, true, rect);
 			doc.createChart(barTitle, doc, CellRangeAddressList.valueOf("A.B2:A.E21"), false, false, false, rect);
 			Chart chartID8 = doc.createChart(areaTitle, doc, CellRangeAddressList.valueOf("A.B2:A.E21"), false, false,
-					false, rect);
+				false, rect);
 			Chart chart8 = doc.getChartById(chartID8.getChartID());
 			chart8.setChartType(ChartType.AREA);
 			Assert.assertEquals(ChartType.AREA, chart8.getChartType());
 			//Assert.assertEquals(8, doc.getChartByTitle(barTitle).size());
 			Assert.assertNotNull(doc.getChartByTitle(areaTitle));
 			doc.save(ResourceUtilities.newTestOutputFile(CHART_FILE2));
-			
+
 		} catch (Exception e) {
-			Logger.getLogger(DataSetTest.class.getName()).log(Level.SEVERE, null, e);
+			LOG.log(Level.SEVERE, null, e);
 			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
 		}
 	}
@@ -162,7 +234,7 @@
 
 		try {
 			SpreadsheetDocument doc = (SpreadsheetDocument) Document.loadDocument(ResourceUtilities
-					.getTestResourceAsStream(CHART_FILE2));
+				.getTestResourceAsStream(CHART_FILE2));
 			doc.deleteChartById("Object 1");
 			//Assert.assertEquals(9, doc.getChartCount());
 			String barTitle = "Bar Chart with CellRange ";
@@ -173,20 +245,20 @@
 			doc.save(ResourceUtilities.newTestOutputFile(CHART_FILE3));
 
 		} catch (Exception e) {
-			Logger.getLogger(DataSetTest.class.getName()).log(Level.SEVERE, null, e);
+			LOG.log(Level.SEVERE, null, e);
 			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
 		}
 	}
-	
+
 	@Test
 	public void testCreateChartInDocument() {
 		try {
 			TextDocument doc = TextDocument.newTextDocument();
 			String title = "LocalData";
 			// double[][] data = new double[3][3];
-			String[] lables = new String[] { "Anna", "Daisy", "Tony", "MingFei" };
-			String[] legends = new String[] { "Day1", "Day2", "Day3" };
-			double[][] data = new double[][] { { 1, 2, 3, 4 }, { 2, 3, 4, 5 }, { 3, 4, 5, 6 } };
+			String[] lables = new String[]{"Anna", "Daisy", "Tony", "MingFei"};
+			String[] legends = new String[]{"Day1", "Day2", "Day3"};
+			double[][] data = new double[][]{{1, 2, 3, 4}, {2, 3, 4, 5}, {3, 4, 5, 6}};
 			Rectangle rect = new Rectangle();
 			rect.x = 2000;
 			rect.y = 2700;
@@ -215,7 +287,7 @@
 			pDoc.save(ResourceUtilities.newTestOutputFile(CHART_FILE_ODP));
 
 		} catch (Exception e) {
-			Logger.getLogger(DataSetTest.class.getName()).log(Level.SEVERE, null, e);
+			LOG.log(Level.SEVERE, null, e);
 			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
 		}
 	}
diff --git a/simple/src/test/resources/SpreadsheetWithChart.ods b/simple/src/test/resources/SpreadsheetWithChart.ods
new file mode 100644
index 0000000..45f325e
--- /dev/null
+++ b/simple/src/test/resources/SpreadsheetWithChart.ods
Binary files differ
diff --git a/validator/pom.xml b/validator/pom.xml
index 1dd4fd2..568a01f 100644
--- a/validator/pom.xml
+++ b/validator/pom.xml
@@ -43,6 +43,7 @@
 		<dependency>
 			<groupId>net.java.dev.msv</groupId>
 			<artifactId>msv-core</artifactId>
+			<version>2013.6.1</version>
 		</dependency>
 		<dependency>
 			<groupId>org.iso_relax.verifier.jaxp.validation</groupId>
@@ -97,7 +98,7 @@
 				<version>1.0-beta-7</version>
 			</extension>
 		</extensions>
-		<plugins>
+		<plugins><!--
 			<plugin>
 				<groupId>org.codehaus.mojo</groupId>
 				<artifactId>wagon-maven-plugin</artifactId>
@@ -151,7 +152,7 @@
 							<toDir>${project.build.directory}/classes/schema/odf1.1</toDir>
 						</configuration>
 					</execution>
-                    <!-- https://issues.apache.org/jira/browse/ODFTOOLKIT-406
+                    <!- https://issues.apache.org/jira/browse/ODFTOOLKIT-406
                     Disabled due to a security exception on Apache servers, when downloading from that OASIS host
                     Error handling resource: sun.security.validator.ValidatorException: 
                         PKIX path building failed: 
@@ -194,7 +195,7 @@
 							<toDir>${project.build.directory}/classes/schema/odf1.0</toDir>
 						</configuration>
 					</execution>
-                                        -->       
+                                        ->     
 					<execution>
 						<id>download-mathml-schema-v3.0</id>
 						<phase>validate</phase>
@@ -262,7 +263,7 @@
 					</execution>
 
 				</executions>
-			</plugin>
+			</plugin>-->
 			<plugin>
 				<artifactId>maven-compiler-plugin</artifactId>
 				<version>2.3.2</version>
@@ -323,7 +324,7 @@
 				<groupId>org.apache.maven.plugins</groupId>
 				<artifactId>maven-surefire-plugin</artifactId>
 				<!-- Explizit version required for fix on systemPropertyVariables -->
-				<version>2.6</version>
+				<version>2.15</version>
 				<configuration>
 					<systemPropertyVariables>
 						<odfdom.version>${project.version}</odfdom.version>
diff --git a/validator/src/main/resources/schema/odf1.1/OpenDocument-manifest-schema-v1.1.rng b/validator/src/main/resources/schema/odf1.1/OpenDocument-manifest-schema-v1.1.rng
new file mode 100644
index 0000000..4082d4b
--- /dev/null
+++ b/validator/src/main/resources/schema/odf1.1/OpenDocument-manifest-schema-v1.1.rng
@@ -0,0 +1,111 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    OASIS OpenDocument v1.1
+    OASIS Standard, 1 Feb 2007
+    Relax-NG Manifest Schema
+
+    $Id$
+
+    © 2002-2007 OASIS Open
+    © 1999-2007 Sun Microsystems, Inc.
+-->
+
+<grammar 
+    xmlns="http://relaxng.org/ns/structure/1.0"
+
+    datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"
+
+    xmlns:manifest="urn:oasis:names:tc:opendocument:xmlns:manifest:1.0">
+<define name="manifest">
+    <element name="manifest:manifest">
+        <oneOrMore>
+            <ref name="file-entry"/>
+        </oneOrMore>
+    </element>
+</define>
+
+<start>
+    <choice>
+        <ref name="manifest"/>
+    </choice>
+</start>
+<define name="file-entry">
+    <element name="manifest:file-entry">
+        <ref name="file-entry-attlist"/>
+        <optional>
+            <ref name="encryption-data"/>
+        </optional>
+    </element>
+</define>
+<define name="file-entry-attlist" combine="interleave">
+    <attribute name="manifest:full-path">
+        <data type="string"/>
+    </attribute>
+</define>
+<define name="file-entry-attlist" combine="interleave">
+    <optional>
+        <attribute name="manifest:size">
+            <data type="nonNegativeInteger"/>
+        </attribute>
+    </optional>
+</define>
+<define name="file-entry-attlist" combine="interleave">
+    <attribute name="manifest:media-type">
+        <data type="string"/>
+    </attribute>
+</define>
+<define name="encryption-data">
+    <element name="manifest:encryption-data">
+        <ref name="encryption-data-attlist"/>
+        <ref name="algorithm"/>
+        <ref name="key-derivation"/>
+    </element>
+</define>
+<define name="encryption-data-attlist" combine="interleave">
+    <attribute name="manifest:checksum-type">
+        <data type="string"/>
+    </attribute>
+</define>
+<define name="encryption-data-attlist" combine="interleave">
+    <attribute name="manifest:checksum">
+        <data type="base64Binary"/>
+    </attribute>
+</define>
+<define name="algorithm">
+    <element name="manifest:algorithm">
+        <ref name="algorithm-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="algorithm-attlist" combine="interleave">
+    <attribute name="manifest:algorithm-name">
+        <data type="string"/>
+    </attribute>
+</define>
+<define name="algorithm-attlist" combine="interleave">
+    <attribute name="manifest:initialisation-vector">
+        <data type="base64Binary"/>
+    </attribute>
+</define>
+<define name="key-derivation">
+    <element name="manifest:key-derivation">
+        <ref name="key-derivation-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="key-derivation-attlist" combine="interleave">
+    <attribute name="manifest:key-derivation-name">
+        <data type="string"/>
+    </attribute>
+</define>
+<define name="key-derivation-attlist" combine="interleave">
+    <attribute name="manifest:salt">
+        <data type="base64Binary"/>
+    </attribute>
+</define>
+<define name="key-derivation-attlist" combine="interleave">
+    <attribute name="manifest:iteration-count">
+            <data type="nonNegativeInteger"/>
+        </attribute>
+</define>
+</grammar>
diff --git a/validator/src/main/resources/schema/odf1.1/OpenDocument-schema-v1.1.rng b/validator/src/main/resources/schema/odf1.1/OpenDocument-schema-v1.1.rng
new file mode 100644
index 0000000..3ba6a68
--- /dev/null
+++ b/validator/src/main/resources/schema/odf1.1/OpenDocument-schema-v1.1.rng
@@ -0,0 +1,17891 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    OASIS OpenDocument v1.1
+    OASIS Standard, 1 Feb 2007
+    Relax-NG Schema
+
+    $Id$
+
+    © 2002-2007 OASIS Open
+    © 1999-2007 Sun Microsystems, Inc.
+-->
+
+<grammar
+    xmlns="http://relaxng.org/ns/structure/1.0"
+    xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
+
+    datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"
+
+    xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0"
+    xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0"
+    xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0"
+    xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
+    xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0"
+    xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"
+    xmlns:presentation="urn:oasis:names:tc:opendocument:xmlns:presentation:1.0"
+    xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0"
+    xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0"
+    xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0"
+    xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0"
+    xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0"
+    xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0"
+    xmlns:anim="urn:oasis:names:tc:opendocument:xmlns:animation:1.0"
+
+    xmlns:dc="http://purl.org/dc/elements/1.1/"
+    xmlns:xlink="http://www.w3.org/1999/xlink"
+    xmlns:math="http://www.w3.org/1998/Math/MathML"
+    xmlns:xforms="http://www.w3.org/2002/xforms"
+
+    xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0"
+    xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0"
+    xmlns:smil="urn:oasis:names:tc:opendocument:xmlns:smil-compatible:1.0"
+>
+<define name="office-process-content">
+    <optional>
+        <attribute name="office:process-content" a:defaultValue="true">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<start>
+    <choice>
+        <ref name="office-document"/>
+        <ref name="office-document-content"/>
+        <ref name="office-document-styles"/>
+        <ref name="office-document-meta"/>
+        <ref name="office-document-settings"/>
+    </choice>
+</start>
+<define name="office-document">
+    <element name="office:document">
+        <ref name="office-document-attrs"/>
+        <ref name="office-document-common-attrs"/>
+        <ref name="office-meta"/>
+        <ref name="office-settings"/>
+        <ref name="office-scripts"/>
+        <ref name="office-font-face-decls"/>
+        <ref name="office-styles"/>
+        <ref name="office-automatic-styles"/>
+        <ref name="office-master-styles"/>
+        <ref name="office-body"/>
+    </element>
+</define>
+<define name="office-document-content">
+    <element name="office:document-content">
+        <ref name="office-document-common-attrs"/>
+        <ref name="office-scripts"/>
+        <ref name="office-font-face-decls"/>
+        <ref name="office-automatic-styles"/>
+        <ref name="office-body"/>
+    </element>
+</define>
+<define name="office-document-styles">
+    <element name="office:document-styles">
+        <ref name="office-document-common-attrs"/>
+        <ref name="office-font-face-decls"/>
+        <ref name="office-styles"/>
+        <ref name="office-automatic-styles"/>
+        <ref name="office-master-styles"/>
+    </element>
+</define>
+<define name="office-document-meta">
+    <element name="office:document-meta">
+        <ref name="office-document-common-attrs"/>
+        <ref name="office-meta"/>
+    </element>
+</define>
+<define name="office-document-settings">
+    <element name="office:document-settings">
+        <ref name="office-document-common-attrs"/>
+        <ref name="office-settings"/>
+    </element>
+</define>
+<define name="office-document-common-attrs" combine="interleave">
+    <optional>
+        <attribute name="office:version">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="office-document-attrs" combine="interleave">
+    <attribute name="office:mimetype">
+        <ref name="string"/>
+    </attribute>
+</define>
+<define name="office-meta">
+    <optional>
+        <element name="office:meta">
+            <ref name="office-meta-content"/>
+        </element>
+    </optional>
+</define>
+
+<define name="office-meta-content">
+    <ref name="anyElements"/>
+</define>
+
+<define name="office-meta-content-strict">
+    <zeroOrMore>
+        <ref name="office-meta-data"/>
+    </zeroOrMore>
+</define>
+<define name="office-body">
+    <element name="office:body">
+        <ref name="office-body-content"/>
+    </element>
+</define>
+<define name="office-body-content" combine="choice">
+    <element name="office:text">
+        <ref name="office-text-attlist"/>
+        <ref name="office-text-content-prelude"/>
+        <zeroOrMore>
+            <ref name="office-text-content-main"/>
+        </zeroOrMore>
+        <ref name="office-text-content-epilogue"/>
+    </element>
+</define>
+<define name="office-text-content-prelude">
+    <ref name="office-forms"/>
+    <ref name="text-tracked-changes"/>
+    <ref name="text-decls"/>
+    <ref name="table-decls"/>
+</define>
+<define name="office-text-content-main">
+    <choice>
+        <zeroOrMore>
+            <ref name="text-content"/>
+        </zeroOrMore>
+        <group>
+            <ref name="text-page-sequence"/>
+            <zeroOrMore>
+                <choice>
+                    <ref name="draw-a"/>
+                    <ref name="shape"/>
+                </choice>
+            </zeroOrMore>
+        </group>
+    </choice>
+</define>
+
+<define name="text-content">
+    <choice>
+        <ref name="text-h"/>
+        <ref name="text-p"/>
+        <ref name="text-list"/>
+        <ref name="text-numbered-paragraph"/>
+        <ref name="table-table"/>
+        <ref name="draw-a"/>
+        <ref name="text-section"/>
+        <ref name="text-soft-page-break"/> 
+        <ref name="text-table-of-content"/>
+        <ref name="text-illustration-index"/>
+        <ref name="text-table-index"/>
+        <ref name="text-object-index"/>
+        <ref name="text-user-index"/>
+        <ref name="text-alphabetical-index"/>
+        <ref name="text-bibliography"/>
+        <ref name="shape"/>
+        <ref name="change-marks"/>
+    </choice>
+</define>
+<define name="office-text-content-epilogue">
+    <ref name="table-functions"/>
+</define>
+<define name="office-text-attlist" combine="interleave">
+    <optional>
+        <attribute name="text:global" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="office-text-attlist" combine="interleave">
+    <optional>
+        <attribute name="text:use-soft-page-breaks" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="office-body-content" combine="choice">
+    <element name="office:drawing">
+        <ref name="office-drawing-attlist"/>
+        <ref name="office-drawing-content-prelude"/>
+        <ref name="office-drawing-content-main"/>
+        <ref name="office-drawing-content-epilogue"/>
+    </element>
+</define>
+
+<define name="office-drawing-attlist">
+    <empty/>
+</define>
+<define name="office-drawing-content-prelude">
+    <ref name="text-decls"/>
+    <ref name="table-decls"/>
+</define>
+<define name="office-drawing-content-main">
+    <zeroOrMore>
+        <ref name="draw-page"/>
+    </zeroOrMore>
+</define>
+<define name="office-drawing-content-epilogue">
+    <ref name="table-functions"/>
+</define>
+<define name="office-body-content" combine="choice">
+    <element name="office:presentation">
+        <ref name="office-presentation-attlist"/>
+        <ref name="office-presentation-content-prelude"/>
+        <ref name="office-presentation-content-main"/>
+        <ref name="office-presentation-content-epilogue"/>
+    </element>
+</define>
+
+<define name="office-presentation-attlist">
+    <empty/>
+</define>
+<define name="office-presentation-content-prelude">
+    <ref name="text-decls"/>
+    <ref name="table-decls"/>
+    <ref name="presentation-decls"/>
+</define>
+<define name="office-presentation-content-main">
+    <zeroOrMore>
+        <ref name="draw-page"/>
+    </zeroOrMore>
+</define>
+<define name="office-presentation-content-epilogue">
+    <ref name="presentation-settings"/>
+    <ref name="table-functions"/>
+</define>
+<define name="office-body-content" combine="choice">
+    <element name="office:spreadsheet">
+        <ref name="office-spreadsheet-attlist"/>
+        <ref name="office-spreadsheet-content-prelude"/>
+        <ref name="office-spreadsheet-content-main"/>
+        <ref name="office-spreadsheet-content-epilogue"/>
+    </element>
+</define>
+<define name="office-spreadsheet-content-prelude">
+    <optional>
+        <ref name="table-tracked-changes"/>    
+    </optional>
+    <ref name="text-decls"/>
+    <ref name="table-decls"/>
+</define>
+
+<define name="table-decls">
+    <optional>
+        <ref name="table-calculation-settings"/>    
+    </optional>
+    <optional>
+        <ref name="table-content-validations"/>    
+    </optional>
+    <optional>
+        <ref name="table-label-ranges"/>    
+    </optional>
+</define>
+<define name="office-spreadsheet-content-main">
+    <zeroOrMore>
+        <ref name="table-table"/>
+    </zeroOrMore>
+</define>
+<define name="office-spreadsheet-content-epilogue">
+    <ref name="table-functions"/>    
+</define>
+
+<define name="table-functions">
+    <optional>
+        <ref name="table-named-expressions"/>    
+    </optional>
+    <optional>
+        <ref name="table-database-ranges"/>    
+    </optional>
+    <optional>
+        <ref name="table-data-pilot-tables"/>    
+    </optional>
+    <optional>
+        <ref name="table-consolidation"/>    
+    </optional>
+    <optional>
+        <ref name="table-dde-links"/>    
+    </optional>
+</define>
+<define name="office-body-content" combine="choice">
+    <element name="office:chart">
+        <ref name="office-chart-attlist"/>
+        <ref name="office-chart-content-prelude"/>
+        <ref name="office-chart-content-main"/>
+        <ref name="office-chart-content-epilogue"/>
+    </element>
+</define>
+
+<define name="office-chart-attlist">
+    <empty/>
+</define>
+<define name="office-chart-content-prelude">
+    <ref name="text-decls"/>
+    <ref name="table-decls"/>
+</define>
+<define name="office-chart-content-main">
+    <ref name="chart-chart"/>
+</define>
+<define name="office-chart-content-epilogue">
+    <ref name="table-functions"/>    
+</define>
+<define name="office-body-content" combine="choice">
+    <element name="office:image">
+        <ref name="office-image-attlist"/>
+        <ref name="office-image-content-prelude"/>
+        <ref name="office-image-content-main"/>
+        <ref name="office-image-content-epilogue"/>
+    </element>
+</define>
+
+<define name="office-image-attlist">
+    <empty/>
+</define>
+<define name="office-image-content-prelude">
+    <empty/>
+</define>
+<define name="office-image-content-main">
+    <ref name="draw-frame"/>
+</define>
+<define name="office-image-content-epilogue">
+    <empty/>
+</define>
+<define name="office-settings">
+    <optional>
+        <element name="office:settings">
+            <oneOrMore>
+                <ref name="config-config-item-set"/>
+            </oneOrMore>
+        </element>
+    </optional>
+</define>
+<define name="config-config-item-set">
+    <element name="config:config-item-set">
+        <ref name="config-config-item-set-attlist"/>
+        <ref name="config-items"/>
+    </element>
+</define>
+
+<define name="config-items">
+    <oneOrMore>
+        <choice>
+            <ref name="config-config-item"/>
+            <ref name="config-config-item-set"/>
+            <ref name="config-config-item-map-named"/>
+            <ref name="config-config-item-map-indexed"/>
+        </choice>
+    </oneOrMore>
+</define>
+<define name="config-config-item-set-attlist" combine="interleave">
+    <attribute name="config:name">
+        <ref name="string"/>
+    </attribute>
+</define>
+<define name="config-config-item">
+    <element name="config:config-item">
+        <ref name="config-config-item-attlist"/>
+        <text/>
+    </element>
+</define>
+<define name="config-config-item-attlist" combine="interleave">
+    <attribute name="config:name">
+        <ref name="string"/>
+    </attribute>
+</define>
+<define name="config-config-item-attlist" combine="interleave">
+    <attribute name="config:type">
+        <choice>
+            <value>boolean</value>
+            <value>short</value>
+            <value>int</value>
+            <value>long</value>
+            <value>double</value>
+            <value>string</value>
+            <value>datetime</value>
+            <value>base64Binary</value>
+        </choice>
+    </attribute>
+</define>
+<define name="config-config-item-map-indexed">
+    <element name="config:config-item-map-indexed">
+        <ref name="config-config-item-map-indexed-attlist"/>
+        <oneOrMore>
+            <ref name="config-config-item-map-entry"/>
+        </oneOrMore>
+    </element>
+</define>
+<define name="config-config-item-map-indexed-attlist" combine="interleave">
+    <attribute name="config:name">
+        <ref name="string"/>
+    </attribute>
+</define>
+<define name="config-config-item-map-entry">
+    <element name="config:config-item-map-entry">
+        <ref name="config-config-item-map-entry-attlist"/>
+        <ref name="config-items"/>
+    </element>
+</define>
+<define name="config-config-item-map-entry-attlist" combine="interleave">
+    <optional>
+        <attribute name="config:name">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="config-config-item-map-named">
+    <element name="config:config-item-map-named">
+        <ref name="config-config-item-map-named-attlist"/>
+        <oneOrMore>
+            <ref name="config-config-item-map-entry"/>
+        </oneOrMore>
+    </element>
+</define>
+<define name="config-config-item-map-named-attlist" combine="interleave">
+    <attribute name="config:name">
+        <ref name="string"/>
+    </attribute>
+</define>
+<define name="office-scripts">
+    <optional>
+        <element name="office:scripts">
+            <zeroOrMore>
+                <ref name="office-script"/>
+            </zeroOrMore>
+            <optional>
+                <ref name="office-event-listeners"/>
+            </optional>
+        </element>
+    </optional>
+</define>
+<define name="office-script">
+    <element name="office:script">
+        <ref name="office-script-attlist"/>
+        <mixed>
+            <ref name="anyElements"/>
+        </mixed>
+    </element>
+</define>
+<define name="office-script-attlist">
+    <attribute name="script:language">
+        <ref name="string"/>
+    </attribute>
+</define>
+<define name="office-font-face-decls">
+    <optional>
+        <element name="office:font-face-decls">
+            <zeroOrMore>
+                <ref name="style-font-face"/>
+            </zeroOrMore>
+        </element>
+    </optional>
+</define>
+<define name="office-styles">
+    <optional>
+        <element name="office:styles">
+            <interleave>
+                <ref name="styles"/>
+                <zeroOrMore>
+                    <ref name="style-default-style"/>
+                </zeroOrMore>
+                <optional>
+                    <ref name="text-outline-style"/>
+                </optional>
+                <zeroOrMore>
+                    <ref name="text-notes-configuration"/>
+                </zeroOrMore>
+                <optional>
+                    <ref name="text-bibliography-configuration"/>
+                </optional>
+                <optional>
+                    <ref name="text-linenumbering-configuration"/>
+                </optional>
+                <zeroOrMore>
+                    <ref name="draw-gradient"/>
+                </zeroOrMore>
+                <zeroOrMore>
+                    <ref name="svg-linearGradient"/>
+                </zeroOrMore>
+                <zeroOrMore>
+                    <ref name="svg-radialGradient"/>
+                </zeroOrMore>
+                <zeroOrMore>
+                    <ref name="draw-hatch"/>
+                </zeroOrMore>
+                <zeroOrMore>
+                    <ref name="draw-fill-image"/>
+                </zeroOrMore>
+                <zeroOrMore>
+                    <ref name="draw-marker"/>
+                </zeroOrMore>
+                <zeroOrMore>
+                    <ref name="draw-stroke-dash"/>
+                </zeroOrMore>
+                <zeroOrMore>
+                    <ref name="draw-opacity"/>
+                </zeroOrMore>
+                <zeroOrMore>
+                    <ref name="style-presentation-page-layout"/>
+                </zeroOrMore>
+            </interleave>
+        </element>
+    </optional>
+</define>
+<define name="office-automatic-styles">
+    <optional>
+        <element name="office:automatic-styles">
+            <interleave>
+                <ref name="styles"/>
+                <zeroOrMore>
+                    <ref name="style-page-layout"/>
+                </zeroOrMore>
+            </interleave>
+        </element>
+    </optional>
+</define>
+<define name="office-master-styles">
+    <optional>
+        <element name="office:master-styles">
+            <interleave>
+                <zeroOrMore>
+                    <ref name="style-master-page"/>
+                </zeroOrMore>
+                <optional>
+                    <ref name="style-handout-master"/>
+                </optional>
+                <optional>
+                    <ref name="draw-layer-set"/>
+                </optional>
+            </interleave>
+        </element>
+    </optional>
+</define>
+
+<define name="styles">
+    <interleave>
+        <zeroOrMore>
+            <ref name="style-style"/>
+        </zeroOrMore>
+        <zeroOrMore>
+            <ref name="text-list-style"/>
+        </zeroOrMore>
+        <zeroOrMore>
+            <ref name="number-number-style"/>
+        </zeroOrMore>
+        <zeroOrMore>
+            <ref name="number-currency-style"/>
+        </zeroOrMore>
+        <zeroOrMore>
+            <ref name="number-percentage-style"/>
+        </zeroOrMore>
+        <zeroOrMore>
+            <ref name="number-date-style"/>
+        </zeroOrMore>
+        <zeroOrMore>
+            <ref name="number-time-style"/>
+        </zeroOrMore>
+        <zeroOrMore>
+            <ref name="number-boolean-style"/>
+        </zeroOrMore>
+        <zeroOrMore>
+            <ref name="number-text-style"/>
+        </zeroOrMore>
+    </interleave>
+</define>
+<define name="office-meta-data" combine="choice">
+    <element name="meta:generator">
+        <ref name="string"/>
+    </element>
+</define>
+<define name="office-meta-data" combine="choice">
+    <element name="dc:title">
+        <ref name="string"/>
+    </element>
+</define>
+<define name="office-meta-data" combine="choice">
+    <element name="dc:description">
+        <ref name="string"/>
+    </element>
+</define>
+<define name="office-meta-data" combine="choice">
+    <element name="dc:subject">
+        <ref name="string"/>
+    </element>
+</define>
+<define name="office-meta-data" combine="choice">
+    <element name="meta:keyword">
+        <ref name="string"/>
+    </element>
+</define>
+<define name="office-meta-data" combine="choice">
+    <element name="meta:initial-creator">
+        <ref name="string"/>
+    </element>
+</define>
+<define name="office-meta-data" combine="choice">
+    <ref name="dc-creator"/>
+</define>
+<define name="dc-creator">
+    <element name="dc:creator">
+        <ref name="string"/>
+    </element>
+</define>
+<define name="office-meta-data" combine="choice">
+    <element name="meta:printed-by">
+        <ref name="string"/>
+    </element>
+</define>
+<define name="office-meta-data" combine="choice">
+    <element name="meta:creation-date">
+        <ref name="dateTime"/>
+    </element>
+</define>
+<define name="office-meta-data" combine="choice">
+    <ref name="dc-date"/>
+</define>
+<define name="dc-date">
+    <element name="dc:date">
+        <ref name="dateTime"/>
+    </element>
+</define>
+<define name="office-meta-data" combine="choice">
+    <element name="meta:print-date">
+        <ref name="dateTime"/>
+    </element>
+</define>
+<define name="office-meta-data" combine="choice">
+    <element name="meta:template">
+        <attribute name="xlink:href">
+            <ref name="anyURI"/>
+        </attribute>
+        <optional>
+            <attribute name="xlink:type" a:defaultValue="simple">
+                <value>simple</value>
+            </attribute>
+        </optional>
+        <optional>
+            <attribute name="xlink:actuate" a:defaultValue="onRequest">
+                <value>onRequest</value>
+            </attribute>
+        </optional>
+        <optional>
+            <attribute name="xlink:title">
+                <ref name="string"/>
+            </attribute>
+        </optional>
+        <optional>
+            <attribute name="meta:date">
+                <ref name="dateTime"/>
+            </attribute>
+        </optional>
+    </element>
+</define>
+<define name="office-meta-data" combine="choice">
+    <element name="meta:auto-reload">
+        <optional>
+            <attribute name="xlink:type" a:defaultValue="simple">
+                <value>simple</value>
+            </attribute>
+        </optional>
+        <optional>
+            <attribute name="xlink:show" a:defaultValue="replace">
+                <value>replace</value>
+            </attribute>
+        </optional>
+        <optional>
+            <attribute name="xlink:actuate" a:defaultValue="onLoad">
+                <value>onLoad</value>
+            </attribute>
+        </optional>
+        <optional>
+            <attribute name="xlink:href">
+                <ref name="anyURI"/>
+            </attribute>
+        </optional>
+        <optional>
+            <attribute name="meta:delay">
+                <ref name="duration"/>
+            </attribute>
+        </optional>
+    </element>
+</define>
+<define name="office-meta-data" combine="choice">
+    <element name="meta:hyperlink-behaviour">
+        <optional>
+            <attribute name="office:target-frame-name">
+                <ref name="targetFrameName"/>
+            </attribute>
+        </optional>
+        <optional>
+            <attribute name="xlink:show">
+                <choice>
+                    <value>new</value>
+                    <value>replace</value>
+                </choice>
+            </attribute>
+        </optional>
+    </element>
+</define>
+<define name="office-meta-data" combine="choice">
+    <element name="dc:language">
+        <ref name="language"/>
+    </element>
+</define>
+<define name="office-meta-data" combine="choice">
+    <element name="meta:editing-cycles">
+        <ref name="nonNegativeInteger"/>
+    </element>
+</define>
+<define name="office-meta-data" combine="choice">
+    <element name="meta:editing-duration">
+        <ref name="duration"/>
+    </element>
+</define>
+<define name="office-meta-data" combine="choice">
+    <element name="meta:document-statistic">
+        <optional>
+            <attribute name="meta:page-count">
+                <ref name="nonNegativeInteger"/>
+            </attribute>
+        </optional>
+        <optional>
+            <attribute name="meta:table-count">
+                <ref name="nonNegativeInteger"/>
+            </attribute>
+        </optional>
+        <optional>
+            <attribute name="meta:draw-count">
+                <ref name="nonNegativeInteger"/>
+            </attribute>
+        </optional>
+        <optional>
+            <attribute name="meta:image-count">
+                <ref name="nonNegativeInteger"/>
+            </attribute>
+        </optional>
+        <optional>
+            <attribute name="meta:ole-object-count">
+                <ref name="nonNegativeInteger"/>
+            </attribute>
+        </optional>
+        <optional>
+            <attribute name="meta:object-count">
+                <ref name="nonNegativeInteger"/>
+            </attribute>
+        </optional>
+        <optional>
+            <attribute name="meta:paragraph-count">
+                <ref name="nonNegativeInteger"/>
+            </attribute>
+        </optional>
+        <optional>
+            <attribute name="meta:word-count">
+                <ref name="nonNegativeInteger"/>
+            </attribute>
+        </optional>
+        <optional>
+            <attribute name="meta:character-count">
+                <ref name="nonNegativeInteger"/>
+            </attribute>
+        </optional>
+        <optional>
+            <attribute name="frame-count">
+                <ref name="nonNegativeInteger"/>
+            </attribute>
+        </optional>
+        <optional>
+            <attribute name="sentence-count">
+                <ref name="nonNegativeInteger"/>
+            </attribute>
+        </optional>
+        <optional>
+            <attribute name="syllable-count">
+                <ref name="nonNegativeInteger"/>
+            </attribute>
+        </optional>
+        <optional>
+            <attribute name="non-whitespace-character-count">
+                <ref name="nonNegativeInteger"/>
+            </attribute>
+        </optional>
+        <optional>
+            <attribute name="meta:row-count">
+                <ref name="nonNegativeInteger"/>
+            </attribute>
+        </optional>
+        <optional>
+            <attribute name="meta:cell-count">
+                <ref name="nonNegativeInteger"/>
+            </attribute>
+        </optional>
+    </element>
+</define>
+<define name="office-meta-data" combine="choice">
+    <element name="meta:user-defined">
+        <attribute name="meta:name">
+            <ref name="string"/>
+        </attribute>
+        <choice>
+            <group>
+                <attribute name="meta:value-type">
+                    <value>float</value>
+                </attribute>
+                <ref name="double"/>
+            </group>
+            <group>
+                <attribute name="meta:value-type">
+                    <value>date</value>
+                </attribute>
+                <ref name="dateOrDateTime"/>
+            </group>
+            <group>
+                <attribute name="meta:value-type">
+                    <value>time</value>
+                </attribute>
+                <ref name="duration"/>
+            </group>
+            <group>
+                <attribute name="meta:value-type">
+                    <value>boolean</value>
+                </attribute>
+                <ref name="boolean"/>
+            </group>
+            <group>
+                <attribute name="meta:value-type">
+                    <value>string</value>
+                </attribute>
+                <ref name="string"/>
+            </group>
+            <text/>
+        </choice>
+    </element>
+</define>
+<define name="text-h">
+    <element name="text:h">
+        <ref name="heading-attrs"/>
+        <ref name="paragraph-attrs"/>
+        <optional>
+            <ref name="text-number"/>
+        </optional>
+        <zeroOrMore>
+            <ref name="paragraph-content"/>
+        </zeroOrMore>
+    </element>
+</define>
+<define name="heading-attrs" combine="interleave">
+    <attribute name="text:outline-level">
+        <ref name="positiveInteger"/>
+    </attribute>
+</define>
+<define name="heading-attrs" combine="interleave">
+    <optional>
+        <attribute name="text:restart-numbering" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="heading-attrs" combine="interleave">
+    <optional>
+        <attribute name="text:start-value">
+            <ref name="nonNegativeInteger"/>
+        </attribute>
+    </optional>
+</define>
+<define name="heading-attrs" combine="interleave">
+    <optional>
+        <attribute name="text:is-list-header" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-number">
+    <element name="text:number">
+        <ref name="string"/>
+    </element>
+</define>
+<define name="text-p">
+    <element name="text:p">
+        <ref name="paragraph-attrs"/>
+        <zeroOrMore>
+            <ref name="paragraph-content"/>
+        </zeroOrMore>
+    </element>
+</define>
+<define name="paragraph-attrs">
+    <optional>
+        <attribute name="text:style-name">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="text:class-names">
+            <ref name="styleNameRefs"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="text:cond-style-name">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+<define name="paragraph-attrs" combine="interleave">
+    <optional>
+        <ref name="text-id"/>
+    </optional>
+</define>
+<define name="text-page-sequence">
+    <element name="text:page-sequence">
+        <oneOrMore>
+            <ref name="text-page"/>
+        </oneOrMore>
+    </element>
+</define>
+<define name="text-page">
+    <element name="text:page">
+        <ref name="text-page-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="text-page-attlist">
+    <attribute name="text:master-page-name">
+        <ref name="styleNameRef"/>
+    </attribute>
+</define>
+<define name="text-list">
+    <element name="text:list">
+        <ref name="text-list-attr"/>
+        <optional>
+            <ref name="text-list-header"/>
+        </optional>
+        <zeroOrMore>
+            <ref name="text-list-item"/>
+        </zeroOrMore>
+    </element>
+</define>
+<define name="text-list-attr" combine="interleave">
+    <optional>
+        <attribute name="text:style-name">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-list-attr" combine="interleave">
+    <optional>
+        <attribute name="text:continue-numbering">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-list-item">
+    <element name="text:list-item">
+        <ref name="text-list-item-attr"/>
+        <ref name="text-list-item-content"/>
+    </element>
+</define>
+<define name="text-list-item-content">
+    <optional>
+        <ref name="text-number"/>
+    </optional>
+    <zeroOrMore>
+        <choice>
+            <ref name="text-p"/>
+            <ref name="text-h"/>
+            <ref name="text-list"/>
+            <ref name="text-soft-page-break"/>
+        </choice>
+    </zeroOrMore>
+</define>
+<define name="text-list-item-attr" combine="interleave">
+    <optional>
+        <attribute name="text:start-value">
+            <ref name="nonNegativeInteger"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-list-header">
+    <element name="text:list-header">
+        <ref name="text-list-item-content"/>
+    </element>
+</define>
+<define name="text-numbered-paragraph">
+    <element name="text:numbered-paragraph">
+        <ref name="text-numbered-paragraph-attr"/>
+        <optional>
+            <ref name="text-number"/>
+        </optional>
+        <choice>
+            <ref name="text-p"/>
+            <ref name="text-h"/>
+        </choice>
+    </element>
+</define>
+<define name="text-numbered-paragraph-attr" combine="interleave">
+    <optional>
+        <attribute name="text:level" a:defaultValue="1">
+            <ref name="positiveInteger"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-numbered-paragraph-attr" combine="interleave">
+    <ref name="text-list-attr"/>
+</define>
+<define name="text-numbered-paragraph-attr" combine="interleave">
+    <ref name="text-list-item-attr"/>
+</define>
+<define name="text-section">
+    <element name="text:section">
+        <ref name="text-section-attr"/>
+        <choice>
+            <ref name="text-section-source"/>
+            <ref name="text-section-source-dde"/>
+            <empty/>
+        </choice>
+        <zeroOrMore>
+            <ref name="text-content"/>
+        </zeroOrMore>
+    </element>
+</define>
+<define name="text-section-attr" combine="interleave">
+    <ref name="sectionAttr"/>
+</define>
+<define name="sectionAttr" combine="interleave">
+    <optional>
+        <attribute name="text:style-name">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+<define name="sectionAttr" combine="interleave">
+    <attribute name="text:name">
+        <ref name="string"/>
+    </attribute>
+</define>
+<define name="sectionAttr" combine="interleave">
+    <optional>
+        <attribute name="text:protected">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="sectionAttr" combine="interleave">
+    <optional>
+        <attribute name="text:protection-key">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-section-attr" combine="interleave">
+    <choice>
+        <attribute name="text:display">
+            <choice>
+                <value>true</value>
+                <value>none</value>
+            </choice>
+        </attribute>
+        <group>
+            <attribute name="text:display">
+                <value>condition</value>
+            </attribute>
+            <attribute name="text:condition">
+                <ref name="string"/>
+            </attribute>
+        </group>
+        <empty/>
+    </choice>
+</define>
+<define name="text-section-source">
+    <element name="text:section-source">
+        <ref name="text-section-source-attr"/>
+    </element>
+</define>
+<define name="text-section-source-attr" combine="interleave">
+    <optional>
+        <attribute name="xlink:href">
+            <ref name="anyURI"/>
+        </attribute>
+        <optional>
+            <attribute name="xlink:type" a:defaultValue="simple">
+                <value>simple</value>
+            </attribute>
+        </optional>
+        <optional>
+            <attribute name="xlink:show" a:defaultValue="embed">
+                <value>embed</value>
+            </attribute>
+        </optional>
+    </optional>
+</define>
+<define name="text-section-source-attr" combine="interleave">
+    <optional>
+        <attribute name="text:section-name">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-section-source-attr" combine="interleave">
+    <optional>
+        <attribute name="text:filter-name">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-section-source-dde">
+    <ref name="office-dde-source"/>
+</define>
+<define name="text-tracked-changes">
+    <optional>
+        <element name="text:tracked-changes">
+            <ref name="text-tracked-changes-attr"/>
+            <zeroOrMore>
+                <ref name="text-changed-region"/>
+            </zeroOrMore>
+        </element>
+    </optional>
+</define>
+<define name="text-tracked-changes-attr" combine="interleave">
+    <optional>
+        <attribute name="text:track-changes" a:defaultValue="true">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-changed-region">
+    <element name="text:changed-region">
+        <ref name="text-changed-region-attr"/>
+        <ref name="text-changed-region-content"/>
+    </element>
+</define>
+<define name="text-changed-region-attr" combine="interleave">
+    <attribute name="text:id">
+        <ref name="ID"/>
+    </attribute>
+</define>
+<define name="text-changed-region-content" combine="choice">
+    <element name="text:insertion">
+        <ref name="office-change-info"/>
+    </element>
+</define>
+<define name="text-changed-region-content" combine="choice">
+    <element name="text:deletion">
+        <ref name="office-change-info"/>
+        <zeroOrMore>
+            <ref name="text-content"/>
+        </zeroOrMore>
+    </element>
+</define>
+<define name="text-changed-region-content" combine="choice">
+    <element name="text:format-change">
+        <ref name="office-change-info"/>
+    </element>
+</define>
+<define name="change-marks">
+    <choice>
+        <element name="text:change">
+            <ref name="change-mark-attr"/>
+        </element>
+        <element name="text:change-start">
+            <ref name="change-mark-attr"/>
+        </element>
+        <element name="text:change-end">
+            <ref name="change-mark-attr"/>
+        </element>
+    </choice>
+</define>
+<define name="change-mark-attr">
+    <attribute name="text:change-id">
+        <ref name="IDREF"/>
+    </attribute>
+</define>
+<define name="text-soft-page-break">
+    <element name="text:soft-page-break">
+        <empty/>
+    </element>
+</define>
+<define name="text-decls">
+    <optional>
+        <element name="text:variable-decls">
+            <zeroOrMore>
+                <ref name="text-variable-decl"/>
+            </zeroOrMore>
+        </element>
+    </optional>
+    <optional>
+        <element name="text:sequence-decls">
+            <zeroOrMore>
+                <ref name="text-sequence-decl"/>
+            </zeroOrMore>
+        </element>
+    </optional>
+    <optional>
+        <element name="text:user-field-decls">
+            <zeroOrMore>
+                <ref name="text-user-field-decl"/>
+            </zeroOrMore>
+        </element>
+    </optional>
+    <optional>
+        <element name="text:dde-connection-decls">
+            <zeroOrMore>
+                <ref name="text-dde-connection-decl"/>
+            </zeroOrMore>
+        </element>
+    </optional>
+    <optional>
+        <ref name="text-alphabetical-index-auto-mark-file"/>
+    </optional>
+</define>
+<define name="paragraph-content" combine="choice">
+    <text/>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:s">
+        <optional>
+            <attribute name="text:c">
+                <ref name="nonNegativeInteger"/>
+            </attribute>
+        </optional>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:tab">
+        <ref name="text-tab-attr"/>
+    </element>
+</define>
+<define name="text-tab-attr">
+    <optional>
+        <attribute name="text:tab-ref">
+            <ref name="nonNegativeInteger"/>
+        </attribute>
+    </optional>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:line-break">
+        <empty/>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <ref name="text-soft-page-break"/>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:span">
+        <optional>
+            <attribute name="text:style-name">
+                <ref name="styleNameRef"/>
+            </attribute>
+        </optional>
+        <optional>
+            <attribute name="text:class-names">
+                <ref name="styleNameRefs"/>
+            </attribute>
+        </optional>
+        <zeroOrMore>
+            <ref name="paragraph-content"/>
+        </zeroOrMore>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:a">
+        <ref name="text-a-attlist"/>
+        <optional>
+            <ref name="office-event-listeners"/>
+        </optional>
+        <zeroOrMore>
+            <ref name="paragraph-content"/>
+        </zeroOrMore>
+    </element>
+</define>
+<define name="text-a-attlist" combine="interleave">
+    <optional>
+        <attribute name="office:name">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-a-attlist" combine="interleave">
+    <optional>
+        <attribute name="office:title">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-a-attlist" combine="interleave">
+    <attribute name="xlink:href">
+        <ref name="anyURI"/>
+    </attribute>
+    <optional>
+        <attribute name="xlink:type" a:defaultValue="simple">
+            <value>simple</value>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="xlink:actuate" a:defaultValue="onRequest">
+            <value>onRequest</value>
+        </attribute>
+    </optional>
+</define>
+<define name="text-a-attlist" combine="interleave">
+    <optional>
+        <attribute name="office:target-frame-name">
+            <ref name="targetFrameName"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="xlink:show">
+            <choice>
+                <value>new</value>
+                <value>replace</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="text-a-attlist" combine="interleave">
+    <optional>
+        <attribute name="text:style-name">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="text:visited-style-name">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+<define name="paragraph-content" combine="choice">
+    <choice>
+        <element name="text:bookmark">
+            <attribute name="text:name">
+                <ref name="string"/>
+            </attribute>
+        </element>
+        <element name="text:bookmark-start">
+            <attribute name="text:name">
+                <ref name="string"/>
+            </attribute>
+        </element>
+        <element name="text:bookmark-end">
+            <attribute name="text:name">
+                <ref name="string"/>
+            </attribute>
+        </element>
+    </choice>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:reference-mark">
+        <attribute name="text:name">
+            <ref name="string"/>
+        </attribute>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <choice>
+        <element name="text:reference-mark-start">
+            <attribute name="text:name">
+                <ref name="string"/>
+            </attribute>
+        </element>
+        <element name="text:reference-mark-end">
+            <attribute name="text:name">
+                <ref name="string"/>
+            </attribute>
+        </element>
+    </choice>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:note">
+        <ref name="text-note-class"/>
+        <optional>
+            <attribute name="text:id">
+                <ref name="string"/>
+            </attribute>
+        </optional>
+        <element name="text:note-citation">
+            <optional>
+                <attribute name="text:label">
+                    <ref name="string"/>
+                </attribute>
+            </optional>
+            <text/>
+        </element>
+        <element name="text:note-body">
+            <zeroOrMore>
+                <ref name="text-content"/>
+            </zeroOrMore>
+        </element>
+    </element>
+</define>
+<define name="text-note-class">
+    <attribute name="text:note-class">
+        <choice>
+            <value>footnote</value>
+            <value>endnote</value>
+        </choice>
+    </attribute>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:ruby">
+        <optional>
+            <attribute name="text:style-name">
+                <ref name="styleNameRef"/>
+            </attribute>
+        </optional>
+        <element name="text:ruby-base">
+            <ref name="paragraph-content"/>
+        </element>
+        <element name="text:ruby-text">
+            <optional>
+                <attribute name="text:style-name">
+                    <ref name="styleNameRef"/>
+                </attribute>
+            </optional>
+            <text/>
+        </element>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <ref name="office-annotation"/>
+</define>
+<define name="paragraph-content" combine="choice">
+    <ref name="change-marks"/>
+</define>
+<define name="paragraph-content" combine="choice">
+    <choice>
+        <ref name="shape"/>
+        <ref name="draw-a"/>
+    </choice>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:date">
+        <ref name="text-date-attlist"/>
+        <text/>
+    </element>
+</define>
+<define name="text-date-attlist" combine="interleave">
+    <interleave>
+        <ref name="common-field-fixed-attlist"/>
+        <ref name="common-field-data-style-name-attlist"/>
+    </interleave>
+</define>
+<define name="text-date-attlist" combine="interleave">
+    <optional>
+        <attribute name="text:date-value">
+            <ref name="dateOrDateTime"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-date-attlist" combine="interleave">
+    <optional>
+        <attribute name="text:date-adjust">
+            <ref name="duration"/>
+        </attribute>
+    </optional>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:time">
+        <ref name="text-time-attlist"/>
+        <text/>
+    </element>
+</define>
+<define name="text-time-attlist" combine="interleave">
+    <interleave>
+        <ref name="common-field-fixed-attlist"/>
+        <ref name="common-field-data-style-name-attlist"/>
+    </interleave>
+</define>
+<define name="text-time-attlist" combine="interleave">
+    <optional>
+        <attribute name="text:time-value">
+            <ref name="timeOrDateTime"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-time-attlist" combine="interleave">
+    <optional>
+        <attribute name="text:time-adjust">
+            <ref name="duration"/>
+        </attribute>
+    </optional>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:page-number">
+        <ref name="text-page-number-attlist"/>
+        <text/>
+    </element>
+</define>
+<define name="text-page-number-attlist" combine="interleave">
+    <interleave>
+        <ref name="common-field-num-format-attlist"/>
+        <ref name="common-field-fixed-attlist"/>
+    </interleave>
+</define>
+<define name="text-page-number-attlist" combine="interleave">
+    <optional>
+        <attribute name="text:page-adjust">
+            <ref name="integer"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-page-number-attlist" combine="interleave">
+    <optional>
+        <attribute name="text:select-page">
+            <choice>
+                <value>previous</value>
+                <value>current</value>
+                <value>next</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:page-continuation">
+        <ref name="text-page-continuation-attlist"/>
+        <text/>
+    </element>
+</define>
+<define name="text-page-continuation-attlist" combine="interleave">
+    <attribute name="text:select-page">
+        <choice>
+            <value>previous</value>
+            <value>next</value>
+        </choice>
+    </attribute>
+</define>
+<define name="text-page-continuation-attlist" combine="interleave">
+    <optional>
+        <attribute name="text:string-value">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:sender-firstname">
+        <ref name="common-field-fixed-attlist"/>
+        <text/>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:sender-lastname">
+        <ref name="common-field-fixed-attlist"/>
+        <text/>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:sender-initials">
+        <ref name="common-field-fixed-attlist"/>
+        <text/>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:sender-title">
+        <ref name="common-field-fixed-attlist"/>
+        <text/>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:sender-position">
+        <ref name="common-field-fixed-attlist"/>
+        <text/>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:sender-email">
+        <ref name="common-field-fixed-attlist"/>
+        <text/>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:sender-phone-private">
+        <ref name="common-field-fixed-attlist"/>
+        <text/>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:sender-fax">
+        <ref name="common-field-fixed-attlist"/>
+        <text/>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:sender-company">
+        <ref name="common-field-fixed-attlist"/>
+        <text/>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:sender-phone-work">
+        <ref name="common-field-fixed-attlist"/>
+        <text/>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:sender-street">
+        <ref name="common-field-fixed-attlist"/>
+        <text/>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:sender-city">
+        <ref name="common-field-fixed-attlist"/>
+        <text/>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:sender-postal-code">
+        <ref name="common-field-fixed-attlist"/>
+        <text/>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:sender-country">
+        <ref name="common-field-fixed-attlist"/>
+        <text/>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:sender-state-or-province">
+        <ref name="common-field-fixed-attlist"/>
+        <text/>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:author-name">
+        <ref name="common-field-fixed-attlist"/>
+        <text/>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:author-initials">
+        <ref name="common-field-fixed-attlist"/>
+        <text/>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:chapter">
+        <ref name="text-chapter-attlist"/>
+        <text/>
+    </element>
+</define>
+<define name="text-chapter-attlist" combine="interleave">
+    <attribute name="text:display">
+        <choice>
+            <value>name</value>
+            <value>number</value>
+            <value>number-and-name</value>
+            <value>plain-number-and-name</value>
+            <value>plain-number</value>
+        </choice>
+    </attribute>
+</define>
+<define name="text-chapter-attlist" combine="interleave">
+    <attribute name="text:outline-level">
+        <ref name="nonNegativeInteger"/>
+    </attribute>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:file-name">
+        <ref name="text-file-name-attlist"/>
+        <text/>
+    </element>
+</define>
+<define name="text-file-name-attlist" combine="interleave">
+    <optional>
+        <attribute name="text:display">
+            <choice>
+                <value>full</value>
+                <value>path</value>
+                <value>name</value>
+                <value>name-and-extension</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="text-file-name-attlist" combine="interleave">
+    <ref name="common-field-fixed-attlist"/>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:template-name">
+        <ref name="text-template-name-attlist"/>
+        <text/>
+    </element>
+</define>
+<define name="text-template-name-attlist">
+    <optional>
+        <attribute name="text:display">
+            <choice>
+                <value>full</value>
+                <value>path</value>
+                <value>name</value>
+                <value>name-and-extension</value>
+                <value>area</value>
+                <value>title</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:sheet-name">
+        <text/>
+    </element>
+</define>
+<define name="text-variable-decl">
+    <element name="text:variable-decl">
+        <ref name="common-field-name-attlist"/>
+        <ref name="common-value-type-attlist"/>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:variable-set">
+        <interleave>
+            <ref name="common-field-name-attlist"/>
+            <ref name="common-field-formula-attlist"/>
+            <ref name="common-value-and-type-attlist"/>
+            <ref name="common-field-display-value-none-attlist"/>
+            <ref name="common-field-data-style-name-attlist"/>
+        </interleave>
+        <text/>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:variable-get">
+        <interleave>
+            <ref name="common-field-name-attlist"/>
+            <ref name="common-field-display-value-formula-attlist"/>
+            <ref name="common-field-data-style-name-attlist"/>
+        </interleave>
+        <text/>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:variable-input">
+        <interleave>
+            <ref name="common-field-name-attlist"/>
+            <ref name="common-field-description-attlist"/>
+            <ref name="common-value-type-attlist"/>
+            <ref name="common-field-display-value-none-attlist"/>
+            <ref name="common-field-data-style-name-attlist"/>
+        </interleave>
+        <text/>
+    </element>
+</define>
+<define name="text-user-field-decl">
+    <element name="text:user-field-decl">
+        <ref name="common-field-name-attlist"/>
+        <optional>
+            <ref name="common-field-formula-attlist"/>
+        </optional>
+        <ref name="common-value-and-type-attlist"/>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:user-field-get">
+        <interleave>
+            <ref name="common-field-name-attlist"/>
+            <ref name="common-field-display-value-formula-none-attlist"/>
+            <ref name="common-field-data-style-name-attlist"/>
+        </interleave>
+        <text/>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:user-field-input">
+        <interleave>
+            <ref name="common-field-name-attlist"/>
+            <ref name="common-field-description-attlist"/>
+            <ref name="common-field-data-style-name-attlist"/>
+        </interleave>
+        <text/>
+    </element>
+</define>
+<define name="text-sequence-decl">
+    <element name="text:sequence-decl">
+        <ref name="text-sequence-decl-attlist"/>
+    </element>
+</define>
+<define name="text-sequence-decl-attlist" combine="interleave">
+    <ref name="common-field-name-attlist"/>
+</define>
+<define name="text-sequence-decl-attlist" combine="interleave">
+    <attribute name="text:display-outline-level">
+        <ref name="nonNegativeInteger"/>
+    </attribute>
+</define>
+<define name="text-sequence-decl-attlist" combine="interleave">
+    <optional>
+        <attribute name="text:separation-character">
+            <ref name="character"/>
+        </attribute>
+    </optional>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:sequence">
+        <interleave>
+            <ref name="common-field-name-attlist"/>
+            <ref name="common-field-formula-attlist"/>
+            <ref name="common-field-num-format-attlist"/>
+            <ref name="text-sequence-ref-name"/>
+        </interleave>
+        <text/>
+    </element>
+</define>
+<define name="text-sequence-ref-name">
+    <optional>
+        <attribute name="text:ref-name">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:expression">
+        <interleave>
+            <ref name="common-field-formula-attlist"/>
+            <optional>
+                <ref name="common-value-and-type-attlist"/>
+            </optional>
+            <ref name="common-field-display-value-formula-attlist"/>
+            <ref name="common-field-data-style-name-attlist"/>
+        </interleave>
+        <text/>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:text-input">
+        <ref name="common-field-description-attlist"/>
+        <text/>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:initial-creator">
+        <ref name="common-field-fixed-attlist"/>
+        <text/>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:creation-date">
+        <interleave>
+            <ref name="common-field-fixed-attlist"/>
+            <ref name="common-field-data-style-name-attlist"/>
+            <optional>
+                <attribute name="text:date-value">
+                    <ref name="dateOrDateTime"/>
+                </attribute>
+            </optional>
+        </interleave>
+        <text/>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:creation-time">
+        <interleave>
+            <ref name="common-field-fixed-attlist"/>
+            <ref name="common-field-data-style-name-attlist"/>
+            <optional>
+                <attribute name="text:time-value">
+                    <ref name="timeOrDateTime"/>
+                </attribute>
+            </optional>
+        </interleave>
+        <text/>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:description">
+        <ref name="common-field-fixed-attlist"/>
+        <text/>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:user-defined">
+        <interleave>
+            <ref name="common-field-fixed-attlist"/>
+            <attribute name="text:name">
+                <ref name="string"/>
+            </attribute>
+            <ref name="common-field-data-style-name-attlist"/>
+            <optional>
+                <attribute name="office:value">
+                    <ref name="double"/>
+                </attribute>
+            </optional>
+            <optional>
+                <attribute name="office:date-value">
+                    <ref name="dateOrDateTime"/>
+                </attribute>
+            </optional>
+            <optional>
+                <attribute name="office:time-value">
+                    <ref name="duration"/>
+                </attribute>
+            </optional>
+            <optional>
+                <attribute name="office:boolean-value">
+                    <ref name="boolean"/>
+                </attribute>
+            </optional>
+            <optional>
+                <attribute name="office:string-value">
+                    <ref name="string"/>
+                </attribute>
+            </optional>
+        </interleave>
+        <text/>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:print-time">
+        <interleave>
+            <ref name="common-field-fixed-attlist"/>
+            <ref name="common-field-data-style-name-attlist"/>
+            <optional>
+                <attribute name="text:time-value">
+                    <ref name="time"/>
+                </attribute>
+            </optional>
+        </interleave>
+        <text/>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:print-date">
+        <interleave>
+            <ref name="common-field-fixed-attlist"/>
+            <ref name="common-field-data-style-name-attlist"/>
+            <optional>
+                <attribute name="text:date-value">
+                    <ref name="date"/>
+                </attribute>
+            </optional>
+        </interleave>
+        <text/>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:printed-by">
+        <ref name="common-field-fixed-attlist"/>
+        <text/>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:title">
+        <ref name="common-field-fixed-attlist"/>
+        <text/>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:subject">
+        <ref name="common-field-fixed-attlist"/>
+        <text/>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:keywords">
+        <ref name="common-field-fixed-attlist"/>
+        <text/>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:editing-cycles">
+        <ref name="common-field-fixed-attlist"/>
+        <text/>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:editing-duration">
+        <interleave>
+            <ref name="common-field-fixed-attlist"/>
+            <ref name="common-field-data-style-name-attlist"/>
+            <optional>
+                <attribute name="text:duration">
+                    <ref name="duration"/>
+                </attribute>
+            </optional>
+        </interleave>
+        <text/>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:modification-time">
+        <interleave>
+            <ref name="common-field-fixed-attlist"/>
+            <ref name="common-field-data-style-name-attlist"/>
+            <optional>
+                <attribute name="text:time-value">
+                    <ref name="time"/>
+                </attribute>
+            </optional>
+        </interleave>
+        <text/>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:modification-date">
+        <interleave>
+            <ref name="common-field-fixed-attlist"/>
+            <ref name="common-field-data-style-name-attlist"/>
+            <optional>
+                <attribute name="text:date-value">
+                    <ref name="date"/>
+                </attribute>
+            </optional>
+        </interleave>
+        <text/>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:creator">
+        <ref name="common-field-fixed-attlist"/>
+        <text/>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element>
+        <choice>
+            <name>text:page-count</name>
+            <name>text:paragraph-count</name>
+            <name>text:word-count</name>
+            <name>text:character-count</name>
+            <name>text:table-count</name>
+            <name>text:image-count</name>
+            <name>text:object-count</name>
+        </choice>
+        <ref name="common-field-num-format-attlist"/>
+        <text/>
+    </element>
+</define>
+<define name="common-field-database-table">
+    <ref name="common-field-database-table-attlist"/>
+    <ref name="common-field-database-name"/>
+</define>
+<define name="common-field-database-name" combine="choice">
+    <optional>
+        <attribute name="text:database-name">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-field-database-name" combine="choice">
+    <ref name="form-connection-resource"/>
+</define>
+<define name="common-field-database-table-attlist" combine="interleave">
+    <attribute name="text:table-name">
+        <ref name="string"/>
+    </attribute>
+</define>
+<define name="common-field-database-table-attlist" combine="interleave">
+    <optional>
+        <attribute name="text:table-type">
+            <choice>
+                <value>table</value>
+                <value>query</value>
+                <value>command</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:database-display">
+        <ref name="text-database-display-attlist"/>
+        <text/>
+    </element>
+</define>
+<define name="text-database-display-attlist" combine="interleave">
+    <ref name="common-field-database-table"/>
+</define>
+<define name="text-database-display-attlist" combine="interleave">
+    <ref name="common-field-data-style-name-attlist"/>
+</define>
+<define name="text-database-display-attlist" combine="interleave">
+    <attribute name="text:column-name">
+        <ref name="string"/>
+    </attribute>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:database-next">
+        <ref name="text-database-next-attlist"/>
+    </element>
+</define>
+<define name="text-database-next-attlist" combine="interleave">
+    <ref name="common-field-database-table"/>
+</define>
+<define name="text-database-next-attlist" combine="interleave">
+    <optional>
+        <attribute name="text:condition">
+            <ref name="formula"/>
+        </attribute>
+    </optional>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:database-row-select">
+        <ref name="text-database-row-select-attlist"/>
+    </element>
+</define>
+<define name="text-database-row-select-attlist" combine="interleave">
+    <ref name="common-field-database-table"/>
+</define>
+<define name="text-database-row-select-attlist" combine="interleave">
+    <optional>
+        <attribute name="text:condition">
+            <ref name="formula"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-database-row-select-attlist" combine="interleave">
+    <optional>
+        <attribute name="text:row-number">
+            <ref name="nonNegativeInteger"/>
+        </attribute>
+    </optional>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:database-row-number">
+        <interleave>
+            <ref name="common-field-database-table"/>
+            <ref name="common-field-num-format-attlist"/>
+            <optional>
+                <attribute name="text:value">
+                    <ref name="nonNegativeInteger"/>
+                </attribute>
+            </optional>
+        </interleave>
+        <text/>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:database-name">
+        <ref name="common-field-database-table"/>
+        <text/>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:page-variable-set">
+        <ref name="text-set-page-variable-attlist"/>
+        <text/>
+    </element>
+</define>
+<define name="text-set-page-variable-attlist" combine="interleave">
+    <optional>
+        <attribute name="text:active">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-set-page-variable-attlist" combine="interleave">
+    <optional>
+        <attribute name="text:page-adjust">
+            <ref name="integer"/>
+        </attribute>
+    </optional>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:page-variable-get">
+        <ref name="text-get-page-variable-attlist"/>
+        <text/>
+    </element>
+</define>
+<define name="text-get-page-variable-attlist" combine="interleave">
+    <ref name="common-field-num-format-attlist"/>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:placeholder">
+        <ref name="text-placeholder-attlist"/>
+        <text/>
+    </element>
+</define>
+<define name="text-placeholder-attlist" combine="interleave">
+    <attribute name="text:placeholder-type">
+        <choice>
+            <value>text</value>
+            <value>table</value>
+            <value>text-box</value>
+            <value>image</value>
+            <value>object</value>
+        </choice>
+    </attribute>
+</define>
+<define name="text-placeholder-attlist" combine="interleave">
+    <ref name="common-field-description-attlist"/>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:conditional-text">
+        <ref name="text-conditional-text-attlist"/>
+        <text/>
+    </element>
+</define>
+<define name="text-conditional-text-attlist" combine="interleave">
+    <attribute name="text:condition">
+        <ref name="formula"/>
+    </attribute>
+</define>
+<define name="text-conditional-text-attlist" combine="interleave">
+    <attribute name="text:string-value-if-true">
+        <ref name="string"/>
+    </attribute>
+</define>
+<define name="text-conditional-text-attlist" combine="interleave">
+    <attribute name="text:string-value-if-false">
+        <ref name="string"/>
+    </attribute>
+</define>
+<define name="text-conditional-text-attlist" combine="interleave">
+    <optional>
+        <attribute name="text:current-value">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:hidden-text">
+        <ref name="text-hidden-text-attlist"/>
+        <text/>
+    </element>
+</define>
+<define name="text-hidden-text-attlist" combine="interleave">
+    <attribute name="text:condition">
+        <ref name="formula"/>
+    </attribute>
+</define>
+<define name="text-hidden-text-attlist" combine="interleave">
+    <attribute name="text:string-value">
+        <ref name="string"/>
+    </attribute>
+</define>
+<define name="text-hidden-text-attlist" combine="interleave">
+    <optional>
+        <attribute name="text:is-hidden">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element>
+        <choice>
+            <name>text:reference-ref</name>
+            <name>text:bookmark-ref</name>
+        </choice>
+        <interleave>
+            <ref name="text-common-ref-content"/>
+            <ref name="text-ref-content"/>
+        </interleave>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:note-ref">
+        <interleave>
+            <ref name="text-common-ref-content"/>
+            <ref name="text-note-ref-content"/>
+            <ref name="text-ref-content"/>
+        </interleave>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:sequence-ref">
+        <interleave>
+            <ref name="text-common-ref-content"/>
+            <ref name="text-sequence-ref-content"/>
+        </interleave>
+    </element>
+</define>
+<define name="text-common-ref-content" combine="interleave">
+    <text/>
+</define>
+<define name="text-common-ref-content" combine="interleave">
+    <optional>
+        <attribute name="text:ref-name">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-note-ref-content" combine="interleave">
+    <ref name="text-note-class"/>
+</define>
+<define name="text-ref-content" combine="interleave">
+    <optional>
+        <attribute name="text:reference-format">
+            <choice>
+                <value>page</value>
+                <value>chapter</value>
+                <value>direction</value>
+                <value>text</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="text-sequence-ref-content" combine="interleave">
+    <optional>
+        <attribute name="text:reference-format">
+            <choice>
+                <value>page</value>
+                <value>chapter</value>
+                <value>direction</value>
+                <value>text</value>
+                <value>category-and-value</value>
+                <value>caption</value>
+                <value>value</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:script">
+        <interleave>
+            <choice>
+                <group>
+                    <attribute name="xlink:href">
+                        <ref name="anyURI"/>
+                    </attribute>
+                    <optional>
+                        <attribute name="xlink:type" a:defaultValue="simple">
+                            <value>simple</value>
+                        </attribute>
+                    </optional>
+                </group>    
+                <text/>
+            </choice>
+            <optional>
+                <attribute name="script:language">
+                    <ref name="string"/>
+                </attribute>
+            </optional>
+        </interleave>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:execute-macro">
+        <optional>
+            <attribute name="text:name">
+                <ref name="string"/>
+            </attribute>
+        </optional>
+        <optional>
+            <ref name="office-event-listeners"/>
+        </optional>
+        <text/>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:hidden-paragraph">
+        <ref name="text-hidden-paragraph-attlist"/>
+        <text/>
+    </element>
+</define>
+<define name="text-hidden-paragraph-attlist" combine="interleave">
+    <attribute name="text:condition">
+        <ref name="formula"/>
+    </attribute>
+</define>
+<define name="text-hidden-paragraph-attlist" combine="interleave">
+    <optional>
+        <attribute name="text:is-hidden">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:dde-connection">
+        <attribute name="text:connection-name">
+            <ref name="string"/>
+        </attribute>
+        <text/>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:measure">
+        <attribute name="text:kind">
+            <choice>
+                <value>value</value>
+                <value>unit</value>
+                <value>gap</value>
+            </choice>
+        </attribute>
+        <text/>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:table-formula">
+        <interleave>
+            <ref name="common-field-formula-attlist"/>
+            <ref name="common-field-display-value-formula-attlist"/>
+            <ref name="common-field-data-style-name-attlist"/>
+        </interleave>
+        <text/>
+    </element>
+</define>
+<define name="common-value-type-attlist">
+    <attribute name="office:value-type">
+        <ref name="valueType"/>
+    </attribute>
+</define>
+<define name="common-value-and-type-attlist">
+    <choice>
+        <group>
+            <attribute name="office:value-type">
+                <value>float</value>
+            </attribute>
+            <attribute name="office:value">
+                <ref name="double"/>
+            </attribute>
+        </group>
+        <group>
+            <attribute name="office:value-type">
+                <value>percentage</value>
+            </attribute>
+            <attribute name="office:value">
+                <ref name="double"/>
+            </attribute>
+        </group>
+        <group>
+            <attribute name="office:value-type">
+                <value>currency</value>
+            </attribute>
+            <attribute name="office:value">
+                <ref name="double"/>
+            </attribute>
+            <optional>
+                <attribute name="office:currency">
+                    <ref name="string"/>
+                </attribute>
+            </optional>
+        </group>
+        <group>
+            <attribute name="office:value-type">
+                <value>date</value>
+            </attribute>
+            <attribute name="office:date-value">
+                <ref name="dateOrDateTime"/>
+            </attribute>
+        </group>
+        <group>
+            <attribute name="office:value-type">
+                <value>time</value>
+            </attribute>
+            <attribute name="office:time-value">
+                <ref name="duration"/>
+            </attribute>
+        </group>
+        <group>
+            <attribute name="office:value-type">
+                <value>boolean</value>
+            </attribute>
+            <attribute name="office:boolean-value">
+                <ref name="boolean"/>
+            </attribute>
+        </group>
+        <group>
+            <attribute name="office:value-type">
+                <value>string</value>
+            </attribute>
+            <optional>
+                <attribute name="office:string-value">
+                    <ref name="string"/>
+                </attribute>
+            </optional>
+        </group>
+    </choice>
+</define>
+<define name="common-field-fixed-attlist">
+    <optional>
+        <attribute name="text:fixed">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-field-name-attlist">
+    <attribute name="text:name">
+        <ref name="variableName"/>
+    </attribute>
+</define>
+<define name="common-field-description-attlist">
+    <optional>
+        <attribute name="text:description">
+            <text/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-field-display-value-none-attlist">
+    <optional>
+        <attribute name="text:display">
+            <choice>
+                <value>value</value>
+                <value>none</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="common-field-display-value-formula-none-attlist">
+    <optional>
+        <attribute name="text:display">
+            <choice>
+                <value>value</value>
+                <value>formula</value>
+                <value>none</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="common-field-display-value-formula-attlist">
+    <optional>
+        <attribute name="text:display">
+            <choice>
+                <value>value</value>
+                <value>formula</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="common-field-formula-attlist">
+    <optional>
+        <attribute name="text:formula">
+            <ref name="formula"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-field-data-style-name-attlist">
+    <optional>
+        <attribute name="style:data-style-name">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-field-num-format-attlist">
+    <optional>
+        <ref name="common-num-format-attlist"/>
+    </optional>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:toc-mark-start">
+        <ref name="text-toc-mark-start-attrs"/>
+    </element>
+</define>
+<define name="text-toc-mark-start-attrs">
+    <ref name="text-id"/>
+    <ref name="text-outline-level"/>
+</define>
+<define name="text-outline-level">
+    <optional>
+        <attribute name="text:outline-level">
+            <ref name="positiveInteger"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-id">
+    <attribute name="text:id">
+        <ref name="string"/>
+    </attribute>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:toc-mark-end">
+        <ref name="text-id"/>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:toc-mark">
+        <attribute name="text:string-value">
+            <ref name="string"/>
+        </attribute>
+        <ref name="text-outline-level"/>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:user-index-mark-start">
+        <ref name="text-id"/>
+        <ref name="text-outline-level"/>
+        <ref name="text-index-name"/>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:user-index-mark-end">
+        <ref name="text-id"/>
+        <ref name="text-outline-level"/>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:user-index-mark">
+        <attribute name="text:string-value">
+            <ref name="string"/>
+        </attribute>
+        <ref name="text-outline-level"/>
+        <ref name="text-index-name"/>
+    </element>
+</define>
+<define name="text-index-name">
+    <attribute name="text:index-name">
+        <ref name="string"/>
+    </attribute>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:alphabetical-index-mark-start">
+        <ref name="text-id"/>
+        <ref name="text-alphabetical-index-mark-attrs"/>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:alphabetical-index-mark-end">
+        <ref name="text-id"/>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:alphabetical-index-mark">
+        <attribute name="text:string-value">
+            <ref name="string"/>
+        </attribute>
+        <ref name="text-alphabetical-index-mark-attrs"/>
+    </element>
+</define>
+<define name="text-alphabetical-index-mark-attrs" combine="interleave">
+    <optional>
+        <attribute name="text:key1">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="text:key2">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-alphabetical-index-mark-attrs" combine="interleave">
+    <optional>
+        <attribute name="text:string-value-phonetic">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="text:key1-phonetic">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="text:key2-phonetic">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-alphabetical-index-mark-attrs" combine="interleave">
+    <optional>
+        <attribute name="text:main-entry" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="text:bibliography-mark">
+        <attribute name="text:bibliography-type">
+            <ref name="text-bibliography-types"/>
+        </attribute>
+        <zeroOrMore>
+            <attribute>
+                <choice>
+                    <name>text:identifier</name>
+                    <name>text:address</name>
+                    <name>text:annote</name>
+                    <name>text:author</name>
+                    <name>text:booktitle</name>
+                    <name>text:chapter</name>
+                    <name>text:edition</name>
+                    <name>text:editor</name>
+                    <name>text:howpublished</name>
+                    <name>text:institution</name>
+                    <name>text:journal</name>
+                    <name>text:month</name>
+                    <name>text:note</name>
+                    <name>text:number</name>
+                    <name>text:organizations</name>
+                    <name>text:pages</name>
+                    <name>text:publisher</name>
+                    <name>text:school</name>
+                    <name>text:series</name>
+                    <name>text:title</name>
+                    <name>text:report-type</name>
+                    <name>text:volume</name>
+                    <name>text:year</name>
+                    <name>text:url</name>
+                    <name>text:custom1</name>
+                    <name>text:custom2</name>
+                    <name>text:custom3</name>
+                    <name>text:custom4</name>
+                    <name>text:custom5</name>
+                    <name>text:isbn</name>
+                    <name>text:issn</name>
+                </choice>
+                <ref name="string"/>
+            </attribute>
+        </zeroOrMore>
+        <text/>
+    </element>
+</define>
+<define name="text-bibliography-types">
+    <choice>
+        <value>article</value>
+        <value>book</value>
+        <value>booklet</value>
+        <value>conference</value>
+        <value>custom1</value>
+        <value>custom2</value>
+        <value>custom3</value>
+        <value>custom4</value>
+        <value>custom5</value>
+        <value>email</value>
+        <value>inbook</value>
+        <value>incollection</value>
+        <value>inproceedings</value>
+        <value>journal</value>
+        <value>manual</value>
+        <value>mastersthesis</value>
+        <value>misc</value>
+        <value>phdthesis</value>
+        <value>proceedings</value>
+        <value>techreport</value>
+        <value>unpublished</value>
+        <value>www</value>
+    </choice>
+</define>
+<define name="text-index-body">
+    <element name="text:index-body">
+        <zeroOrMore>
+            <ref name="index-content-main"/>
+        </zeroOrMore>
+    </element>
+</define>
+<define name="index-content-main">
+    <choice>
+        <ref name="text-content"/>
+        <ref name="text-index-title"/>
+    </choice>
+</define>
+<define name="text-index-title">
+    <element name="text:index-title">
+        <ref name="sectionAttr"/>
+        <zeroOrMore>
+            <ref name="index-content-main"/>
+        </zeroOrMore>
+    </element>
+</define>
+<define name="text-table-of-content">
+    <element name="text:table-of-content">
+        <ref name="sectionAttr"/>
+        <ref name="text-table-of-content-source"/>
+        <ref name="text-index-body"/>
+    </element>
+</define>
+<define name="text-table-of-content-source">
+    <element name="text:table-of-content-source">
+        <ref name="text-table-of-content-source-attlist"/>
+        <optional>
+            <ref name="text-index-title-template"/>
+        </optional>
+        <zeroOrMore>
+            <ref name="text-table-of-content-entry-template"/>
+        </zeroOrMore>
+        <zeroOrMore>
+            <ref name="text-index-source-styles"/>
+        </zeroOrMore>
+    </element>
+</define>
+<define name="text-table-of-content-source-attlist" combine="interleave">
+    <optional>
+        <attribute name="text:outline-level">
+            <choice>
+                <ref name="positiveInteger"/>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="text-table-of-content-source-attlist" combine="interleave">
+    <optional>
+        <attribute name="text:use-outline-level" a:defaultValue="true">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-table-of-content-source-attlist" combine="interleave">
+    <optional>
+        <attribute name="text:use-index-marks">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-table-of-content-source-attlist" combine="interleave">
+    <optional>
+        <attribute name="text:use-index-source-styles">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-table-of-content-source-attlist" combine="interleave">
+    <optional>
+        <attribute name="text:index-scope">
+            <choice>
+                <value>document</value>
+                <value>chapter</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="text-table-of-content-source-attlist" combine="interleave">
+    <optional>
+        <attribute name="text:relative-tab-stop-position">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-table-of-content-entry-template">
+    <element name="text:table-of-content-entry-template">
+        <ref name="text-table-of-content-entry-template-attlist"/>
+        <zeroOrMore>
+            <ref name="text-table-of-content-children"/>
+
+        </zeroOrMore>
+    </element>
+</define>
+<define name="text-table-of-content-children">
+    <choice>
+        <ref name="text-index-entry-chapter"/>
+        <ref name="text-index-entry-page-number"/>
+        <ref name="text-index-entry-text"/>
+        <ref name="text-index-entry-span"/>
+        <ref name="text-index-entry-tab-stop"/>
+        <ref name="text-index-entry-link-start"/>
+        <ref name="text-index-entry-link-end"/>
+    </choice>
+</define>
+<define name="text-table-of-content-entry-template-attlist"
+        combine="interleave">
+    <attribute name="text:outline-level">
+        <ref name="positiveInteger"/>
+    </attribute>
+</define>
+<define name="text-table-of-content-entry-template-attlist"
+        combine="interleave">
+    <attribute name="text:style-name">
+        <ref name="styleNameRef"/>
+    </attribute>
+</define>
+<define name="text-illustration-index">
+    <element name="text:illustration-index">
+        <ref name="sectionAttr"/>
+        <ref name="text-illustration-index-source"/>
+        <ref name="text-index-body"/>
+    </element>
+</define>
+<define name="text-illustration-index-source">
+    <element name="text:illustration-index-source">
+        <ref name="text-illustration-index-source-attrs"/>
+        <optional>
+            <ref name="text-index-title-template"/>
+        </optional>
+        <optional>
+            <ref name="text-illustration-index-entry-template"/>
+        </optional>
+    </element>
+</define>
+<define name="text-illustration-index-source-attrs" combine="interleave">
+    <ref name="text-index-scope-attr"/>
+</define>
+<define name="text-index-scope-attr">
+    <optional>
+        <attribute name="text:index-scope" a:defaultValue="document">
+            <choice>
+                <value>document</value>
+                <value>chapter</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="text-illustration-index-source-attrs" combine="interleave">
+    <ref name="text-relative-tab-stop-position-attr"/>
+</define>
+<define name="text-relative-tab-stop-position-attr">
+    <optional>
+        <attribute name="text:relative-tab-stop-position"
+                   a:defaultValue="true">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-illustration-index-source-attrs" combine="interleave">
+    <optional>
+        <attribute name="text:use-caption" a:defaultValue="true">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-illustration-index-source-attrs" combine="interleave">
+    <optional>
+        <attribute name="text:caption-sequence-name">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-illustration-index-source-attrs" combine="interleave">
+    <optional>
+        <attribute name="text:caption-sequence-format">
+            <choice>
+                <value>text</value>
+                <value>category-and-value</value>
+                <value>caption</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="text-illustration-index-entry-template">
+    <element name="text:illustration-index-entry-template">
+        <ref name="text-illustration-index-entry-content"/>
+    </element>
+</define>
+<define name="text-illustration-index-entry-content">
+    <ref name="text-illustration-index-entry-template-attrs"/>
+    <zeroOrMore>
+        <choice>
+            <ref name="text-index-entry-page-number"/>
+            <ref name="text-index-entry-text"/>
+            <ref name="text-index-entry-span"/>
+            <ref name="text-index-entry-tab-stop"/>
+        </choice>
+    </zeroOrMore>
+</define>
+<define name="text-illustration-index-entry-template-attrs">
+    <attribute name="text:style-name">
+        <ref name="styleNameRef"/>
+    </attribute>
+</define>
+<define name="text-table-index">
+    <element name="text:table-index">
+        <ref name="sectionAttr"/>
+        <ref name="text-table-index-source"/>
+        <ref name="text-index-body"/>
+    </element>
+</define>
+<define name="text-table-index-source">
+    <element name="text:table-index-source">
+        <ref name="text-illustration-index-source-attrs"/>
+        <optional>
+            <ref name="text-index-title-template"/>
+        </optional>
+        <optional>
+            <ref name="text-table-index-entry-template"/>
+        </optional>
+    </element>
+</define>
+<define name="text-table-index-entry-template">
+    <element name="text:table-index-entry-template">
+        <ref name="text-illustration-index-entry-content"/>
+    </element>
+</define>
+<define name="text-object-index">
+    <element name="text:object-index">
+        <ref name="sectionAttr"/>
+        <ref name="text-object-index-source"/>
+        <ref name="text-index-body"/>
+    </element>
+</define>
+<define name="text-object-index-source">
+    <element name="text:object-index-source">
+        <ref name="text-object-index-source-attrs"/>
+        <optional>
+            <ref name="text-index-title-template"/>
+        </optional>
+        <optional>
+            <ref name="text-object-index-entry-template"/>
+        </optional>
+    </element>
+</define>
+<define name="text-object-index-source-attrs" combine="interleave">
+    <ref name="text-index-scope-attr"/>
+</define>
+<define name="text-object-index-source-attrs" combine="interleave">
+    <ref name="text-relative-tab-stop-position-attr"/>
+</define>
+<define name="text-object-index-source-attrs" combine="interleave">
+    <optional>
+        <attribute name="text:use-spreadsheet-objects" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-object-index-source-attrs" combine="interleave">
+    <optional>
+        <attribute name="text:use-math-objects" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-object-index-source-attrs" combine="interleave">
+    <optional>
+        <attribute name="text:use-draw-objects" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-object-index-source-attrs" combine="interleave">
+    <optional>
+        <attribute name="text:use-chart-objects" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-object-index-source-attrs" combine="interleave">
+    <optional>
+        <attribute name="text:use-other-objects" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-object-index-entry-template">
+    <element name="text:object-index-entry-template">
+        <ref name="text-illustration-index-entry-content"/>
+    </element>
+</define>
+<define name="text-user-index">
+    <element name="text:user-index">
+        <ref name="sectionAttr"/>
+        <ref name="text-user-index-source"/>
+        <ref name="text-index-body"/>
+    </element>
+</define>
+<define name="text-user-index-source">
+    <element name="text:user-index-source">
+        <ref name="text-user-index-source-attr"/>
+        <optional>
+            <ref name="text-index-title-template"/>
+        </optional>
+        <zeroOrMore>
+            <ref name="text-user-index-entry-template"/>
+        </zeroOrMore>
+        <zeroOrMore>
+            <ref name="text-index-source-styles"/>
+        </zeroOrMore>
+    </element>
+</define>
+<define name="text-user-index-source-attr" combine="interleave">
+    <ref name="text-index-scope-attr"/>
+    <ref name="text-relative-tab-stop-position-attr"/>
+    <attribute name="text:index-name">
+        <ref name="string"/>
+    </attribute>
+</define>
+<define name="text-user-index-source-attr" combine="interleave">
+    <optional>
+        <attribute name="text:use-index-marks" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="text:use-graphics" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="text:use-tables" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="text:use-floating-frames"
+                     a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="text:use-objects" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-user-index-source-attr" combine="interleave">
+    <optional>
+        <attribute name="text:copy-outline-levels"
+                     a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-user-index-entry-template">
+    <element name="text:user-index-entry-template">
+        <ref name="text-user-index-entry-template-attrs"/>
+        <zeroOrMore>
+            <choice>
+                <ref name="text-index-entry-chapter"/>
+                <ref name="text-index-entry-page-number"/>
+                <ref name="text-index-entry-text"/>
+                <ref name="text-index-entry-span"/>
+                <ref name="text-index-entry-tab-stop"/>
+            </choice>
+        </zeroOrMore>
+    </element>
+</define>
+<define name="text-user-index-entry-template-attrs" combine="interleave">
+    <attribute name="text:outline-level">
+        <ref name="positiveInteger"/>
+    </attribute>
+</define>
+<define name="text-user-index-entry-template-attrs" combine="interleave">
+    <attribute name="text:style-name">
+        <ref name="styleNameRef"/>
+    </attribute>
+</define>
+<define name="text-alphabetical-index">
+    <element name="text:alphabetical-index">
+        <ref name="sectionAttr"/>
+        <ref name="text-alphabetical-index-source"/>
+        <ref name="text-index-body"/>
+    </element>
+</define>
+<define name="text-alphabetical-index-source">
+    <element name="text:alphabetical-index-source">
+        <ref name="text-alphabetical-index-source-attrs"/>
+        <optional>
+            <ref name="text-index-title-template"/>
+        </optional>
+        <zeroOrMore>
+            <ref name="text-alphabetical-index-entry-template"/>
+        </zeroOrMore>
+    </element>
+</define>
+<define name="text-alphabetical-index-source-attrs" combine="interleave">
+    <ref name="text-index-scope-attr"/>
+    <ref name="text-relative-tab-stop-position-attr"/>
+</define>
+<define name="text-alphabetical-index-source-attrs" combine="interleave">
+    <optional>
+        <attribute name="text:ignore-case" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-alphabetical-index-source-attrs" combine="interleave">
+    <optional>
+        <attribute name="text:main-entry-style-name">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-alphabetical-index-source-attrs" combine="interleave">
+    <optional>
+        <attribute name="text:alphabetical-separators" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-alphabetical-index-source-attrs" combine="interleave">
+    <optional>
+        <attribute name="text:combine-entries" a:defaultValue="true">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="text:combine-entries-with-dash"
+                   a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="text:combine-entries-with-pp" a:defaultValue="true">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-alphabetical-index-source-attrs" combine="interleave">
+    <optional>
+        <attribute name="text:use-keys-as-entries" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-alphabetical-index-source-attrs" combine="interleave">
+    <optional>
+        <attribute name="text:capitalize-entries" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-alphabetical-index-source-attrs" combine="interleave">
+    <optional>
+        <attribute name="text:comma-separated" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-alphabetical-index-source-attrs" combine="interleave">
+    <optional>
+        <attribute name="fo:language">
+            <ref name="languageCode"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-alphabetical-index-source-attrs" combine="interleave">
+    <optional>
+        <attribute name="fo:country">
+            <ref name="countryCode"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-alphabetical-index-source-attrs" combine="interleave">
+    <optional>
+        <attribute name="text:sort-algorithm">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-alphabetical-index-auto-mark-file">
+    <element name="text:alphabetical-index-auto-mark-file">
+        <attribute name="xlink:href">
+            <ref name="anyURI"/>
+        </attribute>
+        <optional>
+            <attribute name="xlink:type" a:defaultValue="simple">
+                <value>simple</value>
+            </attribute>
+        </optional>
+    </element>
+</define>
+<define name="text-alphabetical-index-entry-template">
+    <element name="text:alphabetical-index-entry-template">
+        <ref name="text-alphabetical-index-entry-template-attrs"/>
+        <zeroOrMore>
+            <choice>
+                <ref name="text-index-entry-chapter"/>
+                <ref name="text-index-entry-page-number"/>
+                <ref name="text-index-entry-text"/>
+                <ref name="text-index-entry-span"/>
+                <ref name="text-index-entry-tab-stop"/>
+            </choice>
+        </zeroOrMore>
+    </element>
+</define>
+<define name="text-alphabetical-index-entry-template-attrs"
+        combine="interleave">
+    <attribute name="text:outline-level">
+        <choice>
+            <value>1</value>
+            <value>2</value>
+            <value>3</value>
+            <value>separator</value>
+        </choice>
+    </attribute>
+</define>
+<define name="text-alphabetical-index-entry-template-attrs"
+        combine="interleave">
+    <attribute name="text:style-name">
+        <ref name="styleNameRef"/>
+    </attribute>
+</define>
+<define name="text-bibliography">
+    <element name="text:bibliography">
+        <ref name="sectionAttr"/>
+        <ref name="text-bibliography-source"/>
+        <ref name="text-index-body"/>
+    </element>
+</define>
+<define name="text-bibliography-source">
+    <element name="text:bibliography-source">
+        <optional>
+            <ref name="text-index-title-template"/>
+        </optional>
+        <zeroOrMore>
+            <ref name="text-bibliography-entry-template"/>
+        </zeroOrMore>
+    </element>
+</define>
+<define name="text-bibliography-entry-template">
+    <element name="text:bibliography-entry-template">
+        <ref name="text-bibliography-entry-template-attrs"/>
+        <zeroOrMore>
+            <choice>
+                <ref name="text-index-entry-span"/>
+                <ref name="text-index-entry-tab-stop"/>
+                <ref name="text-index-entry-bibliography"/>
+            </choice>
+        </zeroOrMore>
+    </element>
+</define>
+<define name="text-bibliography-entry-template-attrs" combine="interleave">
+    <attribute name="text:bibliography-type">
+        <ref name="text-bibliography-types"/>
+    </attribute>
+</define>
+<define name="text-bibliography-entry-template-attrs" combine="interleave">
+    <attribute name="text:style-name">
+        <ref name="styleNameRef"/>
+    </attribute>
+</define>
+<define name="text-index-source-styles">
+    <element name="text:index-source-styles">
+        <attribute name="text:outline-level">
+            <ref name="positiveInteger"/>
+        </attribute>
+        <zeroOrMore>
+            <ref name="text-index-source-style"/>
+        </zeroOrMore>
+    </element>
+</define>
+<define name="text-index-source-style">
+    <element name="text:index-source-style">
+        <attribute name="text:style-name">
+            <ref name="styleName"/>
+        </attribute>
+        <empty/>
+    </element>
+</define>
+<define name="text-index-title-template">
+    <element name="text:index-title-template">
+        <optional>
+            <attribute name="text:style-name">
+                <ref name="styleNameRef"/>
+            </attribute>
+        </optional>
+        <text/>
+    </element>
+</define>
+<define name="text-index-entry-chapter">
+    <element name="text:index-entry-chapter">
+        <optional>
+            <attribute name="text:style-name">
+                <ref name="styleNameRef"/>
+            </attribute>
+        </optional>
+        <ref name="text-index-entry-chapter-attrs"/>
+    </element>
+</define>
+<define name="text-index-entry-chapter-attrs">
+    <optional>
+        <attribute name="text:display" a:defaultValue="number">
+            <choice>
+                <value>name</value>
+                <value>number</value>
+                <value>number-and-name</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="text-index-entry-text">
+    <element name="text:index-entry-text">
+        <optional>
+            <attribute name="text:style-name">
+                <ref name="styleNameRef"/>
+            </attribute>
+        </optional>
+    </element>
+</define>
+<define name="text-index-entry-page-number">
+    <element name="text:index-entry-page-number">
+        <optional>
+            <attribute name="text:style-name">
+                <ref name="styleNameRef"/>
+            </attribute>
+        </optional>
+    </element>
+</define>
+<define name="text-index-entry-span">
+    <element name="text:index-entry-span">
+        <optional>
+            <attribute name="text:style-name">
+                <ref name="styleNameRef"/>
+            </attribute>
+        </optional>
+        <text/>
+    </element>
+</define>
+<define name="text-index-entry-bibliography">
+    <element name="text:index-entry-bibliography">
+        <ref name="text-index-entry-bibliography-attrs"/>
+    </element>
+</define>
+<define name="text-index-entry-bibliography-attrs" combine="interleave">
+    <optional>
+        <attribute name="text:style-name">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-index-entry-bibliography-attrs" combine="interleave">
+    <attribute name="text:bibliography-data-field">
+        <choice>
+            <value>address</value>
+            <value>annote</value>
+            <value>author</value>
+            <value>bibliography-type</value>
+            <value>booktitle</value>
+            <value>chapter</value>
+            <value>custom1</value>
+            <value>custom2</value>
+            <value>custom3</value>
+            <value>custom4</value>
+            <value>custom5</value>
+            <value>edition</value>
+            <value>editor</value>
+            <value>howpublished</value>
+            <value>identifier</value>
+            <value>institution</value>
+            <value>isbn</value>
+            <value>issn</value>
+            <value>journal</value>
+            <value>month</value>
+            <value>note</value>
+            <value>number</value>
+            <value>organizations</value>
+            <value>pages</value>
+            <value>publisher</value>
+            <value>report-type</value>
+            <value>school</value>
+            <value>series</value>
+            <value>title</value>
+            <value>url</value>
+            <value>volume</value>
+            <value>year</value>
+        </choice>
+    </attribute>
+</define>
+<define name="text-index-entry-tab-stop">
+    <element name="text:index-entry-tab-stop">
+        <optional>
+            <attribute name="text:style-name">
+                <ref name="styleNameRef"/>
+            </attribute>
+        </optional>
+        <ref name="text-index-entry-tab-stop-attrs"/>
+    </element>
+</define>
+<define name="text-index-entry-tab-stop-attrs" combine="interleave">
+    <optional>
+        <attribute name="style:leader-char">
+            <ref name="character"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-index-entry-tab-stop-attrs" combine="interleave">
+    <choice>
+        <attribute name="style:type">
+            <value>right</value>
+        </attribute>
+        <group>
+            <attribute name="style:type">
+                <value>left</value>
+            </attribute>
+            <attribute name="style:position">
+                <ref name="length"/>
+            </attribute>
+        </group>
+    </choice>
+</define>
+<define name="text-index-entry-link-start">
+    <element name="text:index-entry-link-start">
+        <optional>
+            <attribute name="text:style-name">
+                <ref name="styleNameRef"/>
+            </attribute>
+        </optional>
+    </element>
+</define>
+<define name="text-index-entry-link-end">
+    <element name="text:index-entry-link-end">
+        <optional>
+            <attribute name="text:style-name">
+                <ref name="styleNameRef"/>
+            </attribute>
+        </optional>
+    </element>
+</define>
+<define name="table-table">
+    <element name="table:table">
+        <ref name="table-table-attlist"/>
+        <optional>
+            <ref name="table-table-source"/>
+        </optional>
+        <optional>
+            <ref name="office-dde-source"/>
+        </optional>
+        <optional>
+            <ref name="table-scenario"/>
+        </optional>
+        <optional>
+            <ref name="office-forms"/>
+        </optional>
+        <optional>
+            <ref name="table-shapes"/>
+        </optional>
+        <ref name="table-columns-and-groups"/>
+        <ref name="table-rows-and-groups"/>
+    </element>
+</define>
+<define name="table-columns-and-groups">
+    <oneOrMore>
+        <choice>
+            <ref name="table-table-column-group"/>
+            <ref name="table-columns-no-group"/>
+        </choice>
+    </oneOrMore>
+</define>
+
+<define name="table-columns-no-group">
+    <choice>
+        <group>
+            <ref name="table-columns"/>
+            <optional>
+                <ref name="table-table-header-columns"/>
+                <optional>
+                    <ref name="table-columns"/>
+                </optional>
+            </optional>
+        </group>
+        <group>
+            <ref name="table-table-header-columns"/>
+            <optional>
+                <ref name="table-columns"/>
+            </optional>
+        </group>
+    </choice>
+</define>
+
+<define name="table-columns">
+    <choice>
+        <ref name="table-table-columns"/>
+        <oneOrMore>
+                <ref name="table-table-column"/>
+        </oneOrMore>
+    </choice>
+</define>
+
+<define name="table-rows-and-groups">
+    <oneOrMore>
+        <choice>
+            <ref name="table-table-row-group"/>
+            <ref name="table-rows-no-group"/>
+        </choice>
+    </oneOrMore>
+</define>
+
+<define name="table-rows-no-group">
+    <choice>
+        <group>
+            <ref name="table-rows"/>
+            <optional>
+                <ref name="table-table-header-rows"/>
+                <optional>
+                    <ref name="table-rows"/>
+                </optional>
+            </optional>
+        </group>
+        <group>
+            <ref name="table-table-header-rows"/>
+            <optional>
+                <ref name="table-rows"/>
+            </optional>
+        </group>
+    </choice>
+</define>
+
+<define name="table-rows">
+    <choice>
+        <ref name="table-table-rows"/>
+        <oneOrMore>
+            <optional>
+                <ref name="text-soft-page-break"/>
+            </optional>
+            <ref name="table-table-row"/>
+        </oneOrMore>
+    </choice>
+</define>
+<define name="table-table-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:name">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-table-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:style-name">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-table-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:protected" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="table:protection-key">
+            <text/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-table-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:print" a:defaultValue="true">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-table-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:print-ranges">
+            <ref name="cellRangeAddressList"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-table-row">
+    <element name="table:table-row">
+        <ref name="table-table-row-attlist"/>
+        <oneOrMore>
+            <choice>
+                <ref name="table-table-cell"/>
+                <ref name="table-covered-table-cell"/>
+            </choice>
+        </oneOrMore>
+    </element>
+</define>
+<define name="table-table-row-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:number-rows-repeated" a:defaultValue="1">
+            <ref name="positiveInteger"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-table-row-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:style-name">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-table-row-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:default-cell-style-name">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-table-row-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:visibility" a:defaultValue="visible">
+            <ref name="table-visibility-value"/>
+        </attribute>
+    </optional>
+</define>
+
+<define name="table-visibility-value">
+    <choice>
+        <value>visible</value>
+        <value>collapse</value>
+        <value>filter</value>
+    </choice>
+</define>
+<define name="table-table-cell">
+    <element name="table:table-cell">
+        <ref name="table-table-cell-attlist"/>
+        <ref name="table-table-cell-attlist-extra"/>
+        <ref name="table-table-cell-content"/>
+    </element>
+</define>
+
+<define name="table-covered-table-cell">
+    <element name="table:covered-table-cell">
+        <ref name="table-table-cell-attlist"/>
+        <ref name="table-table-cell-content"/>
+    </element>
+</define>
+
+<define name="table-table-cell-content">
+    <optional>
+        <ref name="table-cell-range-source"/>
+    </optional>
+    <optional>
+        <ref name="office-annotation"/>
+    </optional>
+    <optional>
+        <ref name="table-detective"/>
+    </optional>
+    <zeroOrMore>
+        <ref name="text-content"/>
+    </zeroOrMore>
+</define>
+<define name="table-table-cell-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:number-columns-repeated" a:defaultValue="1">
+            <ref name="positiveInteger"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-table-cell-attlist-extra" combine="interleave">
+    <optional>
+        <attribute name="table:number-columns-spanned" a:defaultValue="1">
+            <ref name="positiveInteger"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="table:number-rows-spanned" a:defaultValue="1">
+            <ref name="positiveInteger"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-table-cell-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:style-name">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-table-cell-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:content-validation-name">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-table-cell-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:formula">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-table-cell-attlist-extra" combine="interleave">
+    <optional>
+        <attribute name="table:number-matrix-columns-spanned">
+            <ref name="positiveInteger"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="table:number-matrix-rows-spanned">
+            <ref name="positiveInteger"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-table-cell-attlist" combine="interleave">
+    <optional>
+        <ref name="common-value-and-type-attlist"/>
+    </optional>
+</define>
+<define name="table-table-cell-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:protect" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-table-column">
+    <element name="table:table-column">
+        <ref name="table-table-column-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="table-table-column-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:number-columns-repeated" a:defaultValue="1">
+            <ref name="positiveInteger"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-table-column-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:style-name">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-table-column-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:visibility" a:defaultValue="visible">
+            <ref name="table-visibility-value"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-table-column-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:default-cell-style-name">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-table-header-columns">
+    <element name="table:table-header-columns">
+        <oneOrMore>
+            <ref name="table-table-column"/>
+        </oneOrMore>
+    </element>
+</define>
+
+<define name="table-table-columns">
+    <element name="table:table-columns">
+        <oneOrMore>
+            <ref name="table-table-column"/>
+        </oneOrMore>
+    </element>
+</define>
+<define name="table-table-column-group">
+    <element name="table:table-column-group">
+        <ref name="table-table-column-group-attlist"/>
+        <ref name="table-columns-and-groups"/>
+    </element>
+</define>
+<define name="table-table-column-group-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:display" a:defaultValue="true">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-table-header-rows">
+    <element name="table:table-header-rows">
+        <oneOrMore>
+            <optional>
+                <ref name="text-soft-page-break"/>
+            </optional>
+            <ref name="table-table-row"/>
+        </oneOrMore>
+    </element>
+</define>
+
+<define name="table-table-rows">
+    <element name="table:table-rows">
+        <oneOrMore>
+            <optional>
+                <ref name="text-soft-page-break"/>
+            </optional>
+            <ref name="table-table-row"/>
+        </oneOrMore>
+    </element>
+</define>
+<define name="table-table-row-group">
+    <element name="table:table-row-group">
+        <ref name="table-table-row-group-attlist"/>
+        <ref name="table-rows-and-groups"/>
+    </element>
+</define>
+<define name="table-table-row-group-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:display" a:defaultValue="true">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-table-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:is-sub-table" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="cellAddress">
+    <data type="string">
+        <param name="pattern">($?([^\. ']+|'([^']|'')+'))?\.$?[A-Z]+$?[0-9]+</param>
+
+    </data>
+</define>
+<define name="cellRangeAddress">
+    <data type="string">
+        <param name="pattern">($?([^\. ']+|'([^']|'')+'))?\.$?[A-Z]+$?[0-9]+(:($?([^\. ']+|'([^']|'')+'))?\.$?[A-Z]+$?[0-9]+)?</param>
+
+    </data>
+</define>
+<define name="cellRangeAddressList">
+    <!-- Value is a space separated list of "cellRangeAddress" patterns -->
+    <data type="string"/> 
+</define>
+<define name="table-table-source">
+    <element name="table:table-source">
+        <ref name="table-table-source-attlist"/>
+        <ref name="table-linked-source-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="table-table-source-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:mode" a:defaultValue="copy-all">
+            <choice>
+                <value>copy-all</value>
+                <value>copy-results-only</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="table-table-source-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:table-name">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-linked-source-attlist" combine="interleave">
+    <optional>
+        <attribute name="xlink:type" a:defaultValue="simple">
+            <value>simple</value>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="xlink:actuate" a:defaultValue="onRequest">
+            <value>onRequest</value>
+        </attribute>
+    </optional>
+    <attribute name="xlink:href">
+        <ref name="anyURI"/>
+    </attribute>
+</define>
+<define name="table-linked-source-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:filter-name">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-linked-source-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:filter-options">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-linked-source-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:refresh-delay">
+            <ref name="duration"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-scenario">
+    <element name="table:scenario">
+        <ref name="table-scenario-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="table-scenario-attlist" combine="interleave">
+    <attribute name="table:scenario-ranges">
+        <ref name="cellRangeAddressList"/>
+    </attribute>
+</define>
+<define name="table-scenario-attlist" combine="interleave">
+    <attribute name="table:is-active">
+        <ref name="boolean"/>
+    </attribute>
+</define>
+<define name="table-scenario-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:display-border" a:defaultValue="true">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-scenario-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:border-color">
+            <ref name="color"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-scenario-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:copy-back" a:defaultValue="true">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-scenario-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:copy-styles" a:defaultValue="true">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-scenario-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:copy-formulas" a:defaultValue="true">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-scenario-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:comment">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-scenario-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:protected">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-shapes">
+    <element name="table:shapes">
+        <oneOrMore>
+            <ref name="shape"/>
+        </oneOrMore>
+    </element>
+</define>
+<define name="table-cell-range-source">
+    <element name="table:cell-range-source">
+        <ref name="table-table-cell-range-source-attlist"/>
+        <ref name="table-linked-source-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="table-table-cell-range-source-attlist" combine="interleave">
+    <attribute name="table:name">
+        <ref name="string"/>
+    </attribute>
+</define>
+<define name="table-table-cell-range-source-attlist" combine="interleave">
+    <attribute name="table:last-column-spanned">
+        <ref name="positiveInteger"/>
+    </attribute>
+    <attribute name="table:last-row-spanned">
+        <ref name="positiveInteger"/>
+    </attribute>
+</define>
+<define name="table-detective">
+    <element name="table:detective">
+        <zeroOrMore>
+            <ref name="table-highlighted-range"/>
+        </zeroOrMore>
+        <zeroOrMore>
+            <ref name="table-operation"/>
+        </zeroOrMore>
+    </element>
+</define>
+<define name="table-operation">
+    <element name="table:operation">
+        <ref name="table-operation-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="table-operation-attlist" combine="interleave">
+    <attribute name="table:name">
+        <choice>
+            <value>trace-dependents</value>
+            <value>remove-dependents</value>
+            <value>trace-precedents</value>
+            <value>remove-precedents</value>
+            <value>trace-errors</value>
+        </choice>
+    </attribute>
+</define>
+<define name="table-operation-attlist" combine="interleave">
+    <attribute name="table:index">
+        <ref name="nonNegativeInteger"/>
+    </attribute>
+</define>
+<define name="table-highlighted-range">
+    <element name="table:highlighted-range">
+        <choice>
+            <group>
+                <ref name="table-highlighted-range-attlist"/>
+            </group>
+            <group>
+                <ref name="table-highlighted-range-attlist-invalid"/>
+            </group>
+        </choice>
+        <empty/>
+    </element>
+</define>
+<define name="table-highlighted-range-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:cell-range-address">
+            <ref name="cellRangeAddress"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-highlighted-range-attlist" combine="interleave">
+    <attribute name="table:direction">
+        <choice>
+            <value>from-another-table</value>
+            <value>to-another-table</value>
+            <value>from-same-table</value>
+        </choice>
+    </attribute>
+</define>
+<define name="table-highlighted-range-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:contains-error" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-highlighted-range-attlist-invalid" combine="interleave">
+    <attribute name="table:marked-invalid">
+        <ref name="boolean"/>
+    </attribute>
+</define>
+<define name="office-spreadsheet-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:structure-protected" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="table:protection-key">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-calculation-settings">
+    <element name="table:calculation-settings">
+        <ref name="table-calculation-setting-attlist"/>
+        <optional>
+            <ref name="table-null-date"/>
+        </optional>
+        <optional>
+            <ref name="table-iteration"/>
+        </optional>
+    </element>
+</define>
+<define name="table-calculation-setting-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:case-sensitive" a:defaultValue="true">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-calculation-setting-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:precision-as-shown" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-calculation-setting-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:search-criteria-must-apply-to-whole-cell"
+                     a:defaultValue="true">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-calculation-setting-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:automatic-find-labels" a:defaultValue="true">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-calculation-setting-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:use-regular-expressions"
+                     a:defaultValue="true">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-calculation-setting-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:null-year" a:defaultValue="1930">
+            <ref name="positiveInteger"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-null-date">
+    <element name="table:null-date">
+        <optional>
+            <attribute name="table:value-type" a:defaultValue="date">
+                <ref name="valueType"/>
+            </attribute>
+        </optional>
+        <optional>
+            <attribute name="table:date-value"
+                         a:defaultValue="1899-12-30">
+                <ref name="date"/>
+            </attribute>
+        </optional>
+        <empty/>
+    </element>
+</define>
+<define name="table-iteration">
+    <element name="table:iteration">
+        <optional>
+            <attribute name="table:status" a:defaultValue="disable">
+                <choice>
+                    <value>enable</value>
+                    <value>disable</value>
+                </choice>
+            </attribute>
+        </optional>
+        <optional>
+            <attribute name="table:steps" a:defaultValue="100">
+                <ref name="positiveInteger"/>
+            </attribute>
+        </optional>
+        <optional>
+            <attribute name="table:maximum-difference"
+                         a:defaultValue="0.001">
+                <ref name="double"/>
+            </attribute>
+        </optional>
+        <empty/>
+    </element>
+</define>
+<define name="table-content-validations">
+    <element name="table:content-validations">
+        <oneOrMore>
+            <ref name="table-content-validation"/>
+        </oneOrMore>
+    </element>
+</define>
+
+<define name="table-content-validation">
+    <element name="table:content-validation">
+        <ref name="table-validation-attlist"/>
+        <optional>
+            <ref name="table-help-message"/>
+        </optional>
+        <optional>
+            <choice>
+                <ref name="table-error-message"/>
+                <group>
+                    <ref name="table-error-macro"/>
+                    <optional>
+                        <ref name="office-event-listeners"/>
+                    </optional>
+                </group>
+            </choice>
+        </optional>
+    </element>
+</define>
+<define name="table-validation-attlist" combine="interleave">
+    <attribute name="table:name">
+        <ref name="string"/>
+    </attribute>
+</define>
+<define name="table-validation-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:condition">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-validation-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:base-cell-address">
+            <ref name="cellAddress"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-validation-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:allow-empty-cell" a:defaultValue="true">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-validation-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:display-list" a:defaultValue="unsorted">
+            <choice>
+                <value>none</value>
+                <value>unsorted</value>
+                <value>sort-ascending</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="table-help-message">
+    <element name="table:help-message">
+        <optional>
+            <attribute name="table:title">
+                <ref name="string"/>
+            </attribute>
+        </optional>
+        <optional>
+            <attribute name="table:display" a:defaultValue="false">
+                <ref name="boolean"/>
+            </attribute>
+        </optional>
+        <zeroOrMore>
+            <ref name="text-p"/>
+        </zeroOrMore>
+    </element>
+</define>
+<define name="table-error-message">
+    <element name="table:error-message">
+        <optional>
+            <attribute name="table:title">
+                <ref name="string"/>
+            </attribute>
+        </optional>
+        <optional>
+            <attribute name="table:display" a:defaultValue="false">
+                <ref name="boolean"/>
+            </attribute>
+        </optional>
+        <optional>
+            <attribute name="table:message-type" a:defaultValue="stop">
+                <choice>
+                    <value>stop</value>
+                    <value>warning</value>
+                    <value>information</value>
+                </choice>
+            </attribute>
+        </optional>
+        <zeroOrMore>
+            <ref name="text-p"/>
+        </zeroOrMore>
+    </element>
+</define>
+<define name="table-error-macro">
+    <element name="table:error-macro">
+        <optional>
+            <attribute name="table:execute" a:defaultValue="true">
+                <ref name="boolean"/>
+            </attribute>
+        </optional>
+    </element>
+</define>
+<define name="table-label-ranges">
+    <element name="table:label-ranges">
+        <zeroOrMore>
+            <ref name="table-label-range"/>
+        </zeroOrMore>
+    </element>
+</define>
+
+<define name="table-label-range">
+    <element name="table:label-range">
+        <ref name="table-label-range-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="table-label-range-attlist" combine="interleave">
+    <attribute name="table:label-cell-range-address">
+        <ref name="cellRangeAddress"/>
+    </attribute>
+</define>
+<define name="table-label-range-attlist" combine="interleave">
+    <attribute name="table:data-cell-range-address">
+        <ref name="cellRangeAddress"/>
+    </attribute>
+</define>
+<define name="table-label-range-attlist" combine="interleave">
+    <attribute name="table:orientation">
+        <choice>
+            <value>column</value>
+            <value>row</value>
+        </choice>
+    </attribute>
+</define>
+<define name="table-named-expressions">
+    <element name="table:named-expressions">
+        <zeroOrMore>
+            <choice>
+                <ref name="table-named-range"/>
+                <ref name="table-named-expression"/>
+            </choice>
+        </zeroOrMore>
+    </element>
+</define>
+
+<define name="table-named-range">
+    <element name="table:named-range">
+        <ref name="table-named-range-attlist"/>
+        <empty/>
+    </element>
+</define>
+
+<define name="table-named-range-attlist" combine="interleave">
+    <attribute name="table:name">
+        <ref name="string"/>
+    </attribute>
+    <attribute name="table:cell-range-address">
+        <ref name="cellRangeAddress"/>
+    </attribute>
+    <optional>
+        <attribute name="table:base-cell-address">
+            <ref name="cellAddress"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="table:range-usable-as" a:defaultValue="none">
+            <choice>
+                <value>none</value>
+                <list>
+                    <oneOrMore>
+                        <choice>
+                            <value>print-range</value>
+                            <value>filter</value>
+                            <value>repeat-row</value>
+                            <value>repeat-column</value>
+                        </choice>
+                    </oneOrMore>
+                </list>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="table-named-expression">
+    <element name="table:named-expression">
+        <ref name="table-named-expression-attlist"/>
+        <empty/>
+    </element>
+</define>
+
+<define name="table-named-expression-attlist" combine="interleave">
+    <attribute name="table:name">
+        <ref name="string"/>
+    </attribute>
+    <attribute name="table:expression">
+        <ref name="string"/>
+    </attribute>
+    <optional>
+        <attribute name="table:base-cell-address">
+            <ref name="cellAddress"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-database-ranges">
+    <element name="table:database-ranges">
+        <zeroOrMore>
+            <ref name="table-database-range"/>
+        </zeroOrMore>
+    </element>
+</define>
+<define name="table-database-range">
+    <element name="table:database-range">
+        <ref name="table-database-range-attlist"/>
+        <optional>
+            <choice>
+                <ref name="table-database-source-sql"/>
+                <ref name="table-database-source-table"/>
+                <ref name="table-database-source-query"/>
+            </choice>
+        </optional>
+        <optional>
+            <ref name="table-filter"/>
+        </optional>
+        <optional>
+            <ref name="table-sort"/>
+        </optional>
+        <optional>
+            <ref name="table-subtotal-rules"/>
+        </optional>
+    </element>
+</define>
+<define name="table-database-range-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:name">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-database-range-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:is-selection" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-database-range-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:on-update-keep-styles" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-database-range-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:on-update-keep-size" a:defaultValue="true">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-database-range-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:has-persistent-data" a:defaultValue="true">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-database-range-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:orientation" a:defaultValue="row">
+            <choice>
+                <value>column</value>
+                <value>row</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="table-database-range-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:contains-header" a:defaultValue="true">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-database-range-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:display-filter-buttons"
+                   a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-database-range-attlist" combine="interleave">
+    <attribute name="table:target-range-address">
+        <ref name="cellRangeAddress"/>
+    </attribute>
+</define>
+<define name="table-database-range-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:refresh-delay">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-database-source-sql">
+    <element name="table:database-source-sql">
+        <ref name="table-database-source-sql-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="table-database-source-sql-attlist" combine="interleave">
+    <attribute name="table:database-name">
+        <ref name="string"/>
+    </attribute>
+</define>
+<define name="table-database-source-sql-attlist" combine="interleave">
+    <attribute name="table:sql-statement">
+        <ref name="string"/>
+    </attribute>
+</define>
+<define name="table-database-source-sql-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:parse-sql-statement" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-database-source-query">
+    <element name="table:database-source-table">
+        <ref name="table-database-source-table-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="table-database-source-table-attlist" combine="interleave">
+    <attribute name="table:database-name">
+        <ref name="string"/>
+    </attribute>
+</define>
+<define name="table-database-source-table-attlist" combine="interleave">
+    <attribute name="table:database-table-name">
+        <ref name="string"/>
+    </attribute>
+</define>
+<define name="table-database-source-table">
+    <element name="table:database-source-query">
+        <ref name="table-database-source-query-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="table-database-source-query-attlist" combine="interleave">
+    <attribute name="table:database-name">
+        <ref name="string"/>
+    </attribute>
+</define>
+<define name="table-database-source-query-attlist" combine="interleave">
+    <attribute name="table:query-name">
+        <ref name="string"/>
+    </attribute>
+</define>
+<define name="table-sort">
+    <element name="table:sort">
+        <ref name="table-sort-attlist"/>
+        <oneOrMore>
+            <ref name="table-sort-by"/>
+        </oneOrMore>
+    </element>
+</define>
+<define name="table-sort-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:bind-styles-to-content" a:defaultValue="true">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-sort-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:target-range-address">
+            <ref name="cellRangeAddress"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-sort-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:case-sensitive" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-sort-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:language">
+            <ref name="languageCode"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-sort-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:country">
+            <ref name="countryCode"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-sort-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:algorithm">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-sort-by">
+    <element name="table:sort-by">
+        <ref name="table-sort-by-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="table-sort-by-attlist" combine="interleave">
+    <attribute name="table:field-number">
+        <ref name="nonNegativeInteger"/>
+    </attribute>
+</define>
+<define name="table-sort-by-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:data-type" a:defaultValue="automatic">
+            <choice>
+                <value>text</value>
+                <value>number</value>
+                <value>automatic</value>
+                <ref name="string"/>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="table-sort-by-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:order" a:defaultValue="ascending">
+            <choice>
+                <value>ascending</value>
+                <value>descending</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="table-subtotal-rules">
+    <element name="table:subtotal-rules">
+        <ref name="table-subtotal-rules-attlist"/>
+        <optional>
+            <ref name="table-sort-groups"/>
+        </optional>
+        <zeroOrMore>
+            <ref name="table-subtotal-rule"/>
+        </zeroOrMore>
+    </element>
+</define>
+<define name="table-subtotal-rules-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:bind-styles-to-content" a:defaultValue="true">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-subtotal-rules-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:case-sensitive" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-subtotal-rules-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:page-breaks-on-group-change"
+                   a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-sort-groups">
+    <element name="table:sort-groups">
+        <ref name="table-sort-groups-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="table-sort-groups-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:data-type" a:defaultValue="automatic">
+            <choice>
+                <value>text</value>
+                <value>number</value>
+                <value>automatic</value>
+                <ref name="string"/>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="table-sort-groups-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:order" a:defaultValue="ascending">
+            <choice>
+                <value>ascending</value>
+                <value>descending</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="table-subtotal-rule">
+    <element name="table:subtotal-rule">
+        <ref name="table-subtotal-rule-attlist"/>
+        <zeroOrMore>
+            <ref name="table-subtotal-field"/>
+        </zeroOrMore>
+    </element>
+</define>
+<define name="table-subtotal-rule-attlist" combine="interleave">
+    <attribute name="table:group-by-field-number">
+        <ref name="nonNegativeInteger"/>
+    </attribute>
+</define>
+<define name="table-subtotal-field">
+    <element name="table:subtotal-field">
+        <ref name="table-subtotal-field-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="table-subtotal-field-attlist" combine="interleave">
+    <attribute name="table:field-number">
+        <ref name="nonNegativeInteger"/>
+    </attribute>
+</define>
+<define name="table-subtotal-field-attlist" combine="interleave">
+    <attribute name="table:function">
+        <choice>
+            <value>auto</value>
+            <value>average</value>
+            <value>count</value>
+            <value>countnums</value>
+            <value>max</value>
+            <value>min</value>
+            <value>product</value>
+            <value>stdev</value>
+            <value>stdevp</value>
+            <value>sum</value>
+            <value>var</value>
+            <value>varp</value>
+            <ref name="string"/>
+        </choice>
+    </attribute>
+</define>
+<define name="table-filter">
+    <element name="table:filter">
+        <ref name="table-filter-attlist"/>
+        <choice>
+            <ref name="table-filter-condition"/>
+            <ref name="table-filter-and"/>
+            <ref name="table-filter-or"/>
+        </choice>
+    </element>
+</define>
+<define name="table-filter-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:target-range-address">
+            <ref name="cellRangeAddress"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-filter-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:condition-source" a:defaultValue="self">
+            <choice>
+                <value>self</value>
+                <value>cell-range</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="table-filter-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:condition-source-range-address">
+            <ref name="cellRangeAddress"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-filter-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:display-duplicates" a:defaultValue="true">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-filter-and">
+    <element name="table:filter-and">
+        <oneOrMore>
+            <choice>
+                <ref name="table-filter-or"/>
+                <ref name="table-filter-condition"/>
+            </choice>
+        </oneOrMore>
+    </element>
+</define>
+<define name="table-filter-or">
+    <element name="table:filter-or">
+        <oneOrMore>
+            <choice>
+                <ref name="table-filter-and"/>
+                <ref name="table-filter-condition"/>
+            </choice>
+        </oneOrMore>
+    </element>
+</define>
+<define name="table-filter-condition">
+    <element name="table:filter-condition">
+        <ref name="table-filter-condition-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="table-filter-condition-attlist" combine="interleave">
+    <attribute name="table:field-number">    
+        <ref name="nonNegativeInteger"/>
+    </attribute>
+</define>
+<define name="table-filter-condition-attlist" combine="interleave">
+    <attribute name="table:value">    
+        <ref name="string"/>
+    </attribute>
+</define>
+<define name="table-filter-condition-attlist" combine="interleave">
+    <attribute name="table:operator">    
+        <ref name="string"/>
+    </attribute>
+</define>
+<define name="table-filter-condition-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:case-sensitive" a:defaultValue="false">    
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-filter-condition-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:data-type" a:defaultValue="text">
+            <choice>
+                <value>text</value>
+                <value>number</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="table-data-pilot-tables">
+    <element name="table:data-pilot-tables">
+        <zeroOrMore>
+            <ref name="table-data-pilot-table"/>
+        </zeroOrMore>
+    </element>
+</define>
+<define name="table-data-pilot-table">
+    <element name="table:data-pilot-table">
+        <ref name="table-data-pilot-table-attlist"/>
+        <optional>
+            <choice>
+                <ref name="table-database-source-sql"/>
+                <ref name="table-database-source-table"/>
+                <ref name="table-database-source-query"/>
+                <ref name="table-source-service"/>
+                <ref name="table-source-cell-range"/>
+            </choice>
+        </optional>
+        <oneOrMore>
+            <ref name="table-data-pilot-field"/>
+        </oneOrMore>
+    </element>
+</define>
+<define name="table-data-pilot-table-attlist" combine="interleave">
+    <attribute name="table:name">
+        <ref name="string"/>
+    </attribute>
+</define>
+<define name="table-data-pilot-table-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:application-data">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-data-pilot-table-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:grand-total" a:defaultValue="both">
+            <choice>
+                <value>none</value>
+                <value>row</value>
+                <value>column</value>
+                <value>both</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="table-data-pilot-table-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:ignore-empty-rows" a:defaultValue="false">    
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-data-pilot-table-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:identify-categories" a:defaultValue="false">    
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-data-pilot-table-attlist" combine="interleave">
+    <attribute name="table:target-range-address">    
+        <ref name="cellRangeAddress"/>
+    </attribute>
+</define>
+<define name="table-data-pilot-table-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:buttons">    
+            <ref name="cellRangeAddressList"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-data-pilot-table-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:show-filter-button" a:defaultValue="true">    
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-data-pilot-table-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:drill-down-on-double-click"
+                   a:defaultValue="true">    
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-source-cell-range">
+    <element name="table:source-cell-range">
+        <ref name="table-source-cell-range-attlist"/>
+        <optional>
+            <ref name="table-filter"/>
+        </optional>
+    </element>
+</define>
+<define name="table-source-cell-range-attlist" combine="interleave">
+    <attribute name="table:cell-range-address">    
+        <ref name="cellRangeAddress"/>
+    </attribute>
+</define>
+<define name="table-source-service">
+    <element name="table:source-service">
+        <ref name="table-source-service-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="table-source-service-attlist" combine="interleave">
+    <attribute name="table:name">    
+        <ref name="string"/>
+    </attribute>
+</define>
+<define name="table-source-service-attlist" combine="interleave">
+    <attribute name="table:source-name">
+        <ref name="string"/>
+    </attribute>
+</define>
+<define name="table-source-service-attlist" combine="interleave">
+    <attribute name="table:object-name">
+        <ref name="string"/>
+    </attribute>
+</define>
+<define name="table-source-service-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:user-name">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-source-service-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:password">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-data-pilot-field">
+    <element name="table:data-pilot-field">
+        <ref name="table-data-pilot-field-attlist"/>
+        <optional>
+            <ref name="table-data-pilot-level"/>
+        </optional>
+        <optional>
+            <ref name="table-data-pilot-field-reference"/>
+        </optional>
+        <optional>
+            <ref name="table-data-pilot-groups"/>
+        </optional>
+    </element>
+</define>
+<define name="table-data-pilot-field-attlist" combine="interleave">
+    <attribute name="table:source-field-name">    
+        <ref name="string"/>
+    </attribute>
+</define>
+<define name="table-data-pilot-field-attlist" combine="interleave">
+    <choice>
+        <attribute name="table:orientation">    
+            <choice>
+                <value>row</value>
+                <value>column</value>
+                <value>data</value>
+                <value>hidden</value>
+            </choice>
+        </attribute>
+        <group>
+            <attribute name="table:orientation">
+                <value>page</value>
+            </attribute>
+            <attribute name="table:selected-page">
+                <ref name="string"/>
+            </attribute>
+        </group>
+    </choice>
+</define>
+<define name="table-data-pilot-field-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:is-data-layout-field" a:defaultValue="false">    
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-data-pilot-field-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:function">
+            <choice>
+                <value>auto</value>
+                <value>average</value>
+                <value>count</value>
+                <value>countnums</value>
+                <value>max</value>
+                <value>min</value>
+                <value>product</value>
+                <value>stdev</value>
+                <value>stdevp</value>
+                <value>sum</value>
+                <value>var</value>
+                <value>varp</value>
+                <ref name="string"/>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="table-data-pilot-field-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:used-hierarchy" a:defaultValue="-1">    
+            <ref name="integer"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-data-pilot-level">
+    <element name="table:data-pilot-level">
+        <ref name="table-data-pilot-level-attlist"/>
+        <optional>
+            <ref name="table-data-pilot-subtotals"/>
+        </optional>
+        <optional>
+            <ref name="table-data-pilot-members"/>
+        </optional>
+        <optional>
+            <ref name="table-data-pilot-display-info"/>
+        </optional>
+        <optional>
+            <ref name="table-data-pilot-sort-info"/>
+        </optional>
+        <optional>
+            <ref name="table-data-pilot-layout-info"/>
+        </optional>
+    </element>
+</define>
+<define name="table-data-pilot-level-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:show-empty">    
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-data-pilot-subtotals">
+    <element name="table:data-pilot-subtotals">
+        <zeroOrMore>
+            <ref name="table-data-pilot-subtotal"/>
+        </zeroOrMore>
+    </element>
+</define>
+<define name="table-data-pilot-subtotal">
+    <element name="table:data-pilot-subtotal">
+        <ref name="table-data-pilot-subtotal-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="table-data-pilot-subtotal-attlist" combine="interleave">
+    <attribute name="table:function">
+        <choice>
+            <value>auto</value>
+            <value>average</value>
+            <value>count</value>
+            <value>countnums</value>
+            <value>max</value>
+            <value>min</value>
+            <value>product</value>
+            <value>stdev</value>
+            <value>stdevp</value>
+            <value>sum</value>
+            <value>var</value>
+            <value>varp</value>
+            <ref name="string"/>
+        </choice>
+    </attribute>
+</define>
+<define name="table-data-pilot-members">
+    <element name="table:data-pilot-members">
+        <zeroOrMore>
+            <ref name="table-data-pilot-member"/>
+        </zeroOrMore>
+    </element>
+</define>
+<define name="table-data-pilot-member">
+    <element name="table:data-pilot-member">
+        <ref name="table-data-pilot-member-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="table-data-pilot-member-attlist" combine="interleave">
+    <attribute name="table:name">
+        <ref name="string"/>
+    </attribute>
+</define>
+<define name="table-data-pilot-member-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:display">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-data-pilot-member-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:show-details">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-data-pilot-display-info">
+    <element name="table:data-pilot-display-info">
+        <ref name="table-data-pilot-display-info-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="table-data-pilot-display-info-attlist" combine="interleave">
+    <attribute name="table:enabled">
+        <ref name="boolean"/>
+    </attribute>
+</define>
+<define name="table-data-pilot-display-info-attlist" combine="interleave">
+    <attribute name="table:data-field">
+        <ref name="string"/>
+    </attribute>
+</define>
+<define name="table-data-pilot-display-info-attlist" combine="interleave">
+    <attribute name="table:member-count">
+        <ref name="nonNegativeInteger"/>
+    </attribute>
+</define>
+<define name="table-data-pilot-display-info-attlist" combine="interleave">
+    <attribute name="table:display-member-mode">
+        <choice>
+            <value>from-top</value>
+            <value>from-bottom</value>
+        </choice>
+    </attribute>
+</define>
+<define name="table-data-pilot-sort-info">
+    <element name="table:data-pilot-sort-info">
+        <ref name="table-data-pilot-sort-info-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="table-data-pilot-sort-info-attlist" combine="interleave">
+    <choice>
+        <group>
+            <attribute name="table:sort-mode">
+                <value>data</value>
+            </attribute>
+            <attribute name="table:data-field">
+                <ref name="string"/>
+            </attribute>
+        </group>
+        <attribute name="table:sort-mode">
+            <choice>
+                <value>none</value>
+                <value>manual</value>
+                <value>name</value>
+            </choice>
+        </attribute>
+    </choice>
+</define>
+<define name="table-data-pilot-sort-info-attlist" combine="interleave">
+    <attribute name="table:order">
+        <choice>
+            <value>ascending</value>
+            <value>descending</value>
+        </choice>
+    </attribute>
+</define>
+<define name="table-data-pilot-layout-info">
+    <element name="table:data-pilot-layout-info">
+        <ref name="table-data-pilot-layout-info-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="table-data-pilot-layout-info-attlist" combine="interleave">
+    <attribute name="table:layout-mode">
+        <choice>
+            <value>tabular-layout</value>
+            <value>outline-subtotals-top</value>
+            <value>outline-subtotals-bottom</value>
+        </choice>
+    </attribute>
+</define>
+<define name="table-data-pilot-layout-info-attlist" combine="interleave">
+    <attribute name="table:add-empty-lines">
+        <ref name="boolean"/>
+    </attribute>
+</define>
+<define name="table-data-pilot-field-reference">
+    <element name="table:data-pilot-field-reference">
+        <ref name="table-data-pilot-field-reference-attlist"/>
+    </element>
+</define>
+<define name="table-data-pilot-field-reference-attlist" combine="interleave">
+    <attribute name="table:field-name">
+        <ref name="string"/>
+    </attribute>
+</define>
+<define name="table-data-pilot-field-reference-attlist" combine="interleave">
+    <choice>
+        <group>
+            <attribute name="table:member-type">
+                <value>named</value>
+            </attribute>
+            <attribute name="table:member-name">
+                <ref name="string"/>
+            </attribute>
+        </group>
+        <attribute name="table:member-type">
+            <choice>
+                <value>previous</value>
+                <value>next</value>
+            </choice>
+        </attribute>
+    </choice>
+</define>
+<define name="table-data-pilot-field-reference-attlist" combine="interleave">
+    <attribute name="table:type">
+        <choice>
+            <value>none</value>
+            <value>member-difference</value>
+            <value>member-percentage</value>
+            <value>member-percentage-difference</value>
+            <value>running-total</value>
+            <value>row-percentage</value>
+            <value>column-percentage</value>
+            <value>total-percentage</value>
+            <value>index</value>
+        </choice>
+    </attribute>
+</define>
+<define name="table-data-pilot-groups">
+    <element name="table:data-pilot-groups">
+        <ref name="table-data-pilot-groups-attlist"/>
+        <oneOrMore>
+            <ref name="table-data-pilot-group"/>
+        </oneOrMore>
+    </element>
+</define>
+<define name="table-data-pilot-groups-attlist" combine="interleave">
+    <attribute name="table:source-field-name">
+        <ref name="string"/>
+    </attribute>
+</define>
+<define name="table-data-pilot-groups-attlist" combine="interleave">
+    <choice>
+        <attribute name="table:date-start">
+            <choice>
+                <ref name="dateOrDateTime"/>
+                <value>auto</value>
+            </choice>
+        </attribute>
+        <attribute name="table:start">
+            <choice>
+                <ref name="double"/>
+                <value>auto</value>
+            </choice>
+        </attribute>
+    </choice>
+</define>
+<define name="table-data-pilot-groups-attlist" combine="interleave">
+    <choice>
+        <attribute name="table:date-end">
+            <choice>
+                <ref name="dateOrDateTime"/>
+                <value>auto</value>
+            </choice>
+        </attribute>
+        <attribute name="table:end">
+            <choice>
+                <ref name="double"/>
+                <value>auto</value>
+            </choice>
+        </attribute>
+    </choice>
+</define>
+<define name="table-data-pilot-groups-attlist" combine="interleave">
+    <attribute name="table:step">
+        <ref name="double"/>
+    </attribute>
+</define>
+<define name="table-data-pilot-groups-attlist" combine="interleave">
+    <attribute name="table:grouped-by">
+        <choice>
+            <value>seconds</value>
+            <value>minutes</value>
+            <value>hours</value>
+            <value>days</value>
+            <value>months</value>
+            <value>quarters</value>
+            <value>years</value>
+        </choice>
+    </attribute>
+</define>
+<define name="table-data-pilot-group">
+    <element name="table:data-pilot-group">
+        <ref name="table-data-pilot-group-attlist"/>
+        <oneOrMore>
+            <ref name="table-data-pilot-group-member"/>
+        </oneOrMore>
+    </element>
+</define>
+<define name="table-data-pilot-group-attlist" combine="interleave">
+    <attribute name="table:name">
+        <ref name="string"/>
+    </attribute>
+</define>
+<define name="table-data-pilot-group-member">
+    <element name="table:data-pilot-group-member">
+        <ref name="table-data-pilot-group-member-attlist"/>
+    </element>
+</define>
+<define name="table-data-pilot-group-member-attlist" combine="interleave">
+    <attribute name="table:name">
+        <ref name="string"/>
+    </attribute>
+</define>
+<define name="table-consolidation">
+    <element name="table:consolidation">
+        <ref name="table-consolidation-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="table-consolidation-attlist" combine="interleave">
+    <attribute name="table:function">    
+        <choice>
+            <value>auto</value>
+            <value>average</value>
+            <value>count</value>
+            <value>countnums</value>
+            <value>max</value>
+            <value>min</value>
+            <value>product</value>
+            <value>stdev</value>
+            <value>stdevp</value>
+            <value>sum</value>
+            <value>var</value>
+            <value>varp</value>
+            <ref name="string"/>
+        </choice>
+    </attribute>
+</define>
+<define name="table-consolidation-attlist" combine="interleave">
+    <attribute name="table:source-cell-range-addresses">    
+        <ref name="cellRangeAddressList"/>
+    </attribute>
+</define>
+<define name="table-consolidation-attlist" combine="interleave">
+    <attribute name="table:target-cell-address">    
+        <ref name="cellAddress"/>
+    </attribute>
+</define>
+<define name="table-consolidation-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:use-labels" a:defaultValue="none">
+            <choice>
+                <value>none</value>
+                <value>row</value>
+                <value>column</value>
+                <value>both</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="table-consolidation-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:link-to-source-data" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-dde-links">
+    <element name="table:dde-links">
+        <oneOrMore>
+            <ref name="table-dde-link"/>
+        </oneOrMore>
+    </element>
+</define>
+<define name="table-tracked-changes">
+    <element name="table:tracked-changes">
+        <ref name="table-tracked-changes-attlist"/>
+        <zeroOrMore>
+            <choice>
+                <ref name="table-cell-content-change"/>
+                <ref name="table-insertion"/>
+                <ref name="table-deletion"/>
+                <ref name="table-movement"/>
+            </choice>
+        </zeroOrMore>
+    </element>
+</define>
+<define name="table-tracked-changes-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:track-changes" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-insertion">
+    <element name="table:insertion">
+        <ref name="table-insertion-attlist"/>
+        <ref name="common-table-change-attlist"/>
+        <ref name="office-change-info"/>
+        <optional>
+            <ref name="table-dependencies"/>
+        </optional>
+        <optional>
+            <ref name="table-deletions"/>
+        </optional>
+    </element>
+</define>
+<define name="table-insertion-attlist" combine="interleave">
+    <attribute name="table:type">
+        <choice>
+            <value>row</value>
+            <value>column</value>
+            <value>table</value>
+        </choice>
+    </attribute>
+</define>
+<define name="table-insertion-attlist" combine="interleave">
+    <attribute name="table:position">
+        <ref name="integer"/>
+    </attribute>
+</define>
+<define name="table-insertion-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:count" a:defaultValue="1">
+            <ref name="positiveInteger"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-insertion-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:table">
+            <ref name="integer"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-dependencies">
+    <element name="table:dependencies">
+        <oneOrMore>
+            <ref name="table-dependency"/>
+        </oneOrMore>
+    </element>
+</define>
+<define name="table-dependency">
+    <element name="table:dependency">
+        <attribute name="table:id">
+            <ref name="string"/>
+        </attribute>
+        <empty/>
+    </element>
+</define>
+<define name="table-deletions">
+    <element name="table:deletions">
+        <oneOrMore>
+            <choice>
+                <ref name="table-cell-content-deletion"/>
+                <ref name="table-change-deletion"/>
+            </choice>
+        </oneOrMore>
+    </element>
+</define>
+<define name="table-cell-content-deletion">
+    <element name="table:cell-content-deletion">
+        <optional>
+            <attribute name="table:id">
+                <ref name="string"/>
+            </attribute>
+        </optional>
+        <optional>
+            <ref name="table-cell-address"/>
+        </optional>
+        <optional>
+            <ref name="table-change-track-table-cell"/>
+        </optional>
+    </element>
+</define>
+<define name="table-change-deletion">
+    <element name="table:change-deletion">
+        <optional>
+            <attribute name="table:id">
+                <ref name="string"/>
+            </attribute>
+        </optional>
+        <empty/>
+    </element>
+</define>
+<define name="table-deletion">
+    <element name="table:deletion">
+        <ref name="table-deletion-attlist"/>
+        <ref name="common-table-change-attlist"/>
+        <ref name="office-change-info"/>
+        <optional>
+            <ref name="table-dependencies"/>
+        </optional>
+        <optional>
+            <ref name="table-deletions"/>
+        </optional>
+        <optional>
+            <ref name="table-cut-offs"/>
+        </optional>
+    </element>
+</define>
+<define name="table-deletion-attlist" combine="interleave">
+    <attribute name="table:type">
+        <choice>
+            <value>row</value>
+            <value>column</value>
+            <value>table</value>
+        </choice>
+    </attribute>
+</define>
+<define name="table-deletion-attlist" combine="interleave">
+    <attribute name="table:position">
+        <ref name="integer"/>
+    </attribute>
+</define>
+<define name="table-deletion-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:table">
+            <ref name="integer"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-deletion-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:multi-deletion-spanned">
+            <ref name="integer"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-cut-offs">
+    <element name="table:cut-offs">
+        <choice>
+            <oneOrMore>
+                <ref name="table-movement-cut-off"/>
+            </oneOrMore>
+            <group>
+                <ref name="table-insertion-cut-off"/>
+                <zeroOrMore>
+                    <ref name="table-movement-cut-off"/>
+                </zeroOrMore>
+            </group>
+        </choice>
+    </element>
+</define>
+<define name="table-insertion-cut-off">
+    <element name="table:insertion-cut-off">
+        <ref name="table-insertion-cut-off-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="table-insertion-cut-off-attlist" combine="interleave">
+    <attribute name="table:id">
+        <ref name="string"/>
+    </attribute>
+</define>
+<define name="table-insertion-cut-off-attlist" combine="interleave">
+    <attribute name="table:position">
+        <ref name="integer"/>
+    </attribute>
+</define>
+<define name="table-movement-cut-off">
+    <element name="table:movement-cut-off">
+        <ref name="table-movement-cut-off-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="table-movement-cut-off-attlist" combine="interleave">
+    <choice>
+        <attribute name="table:position">
+            <ref name="integer"/>
+        </attribute>
+        <group>
+            <attribute name="table:start-position">
+                <ref name="integer"/>
+            </attribute>
+            <attribute name="table:end-position">
+                <ref name="integer"/>
+            </attribute>
+        </group>
+    </choice>
+</define>
+<define name="table-movement">
+    <element name="table:movement">
+        <ref name="common-table-change-attlist"/>
+        <ref name="table-source-range-address"/>
+        <ref name="table-target-range-address"/>
+        <ref name="office-change-info"/>
+        <optional>
+            <ref name="table-dependencies"/>
+        </optional>
+        <optional>
+            <ref name="table-deletions"/>
+        </optional>
+    </element>
+</define>
+<define name="table-source-range-address">
+    <element name="table:source-range-address">
+        <ref name="common-table-range-attlist"/>
+        <empty/>
+    </element>
+</define>
+
+<define name="table-target-range-address">
+    <element name="table:target-range-address">
+        <ref name="common-table-range-attlist"/>
+        <empty/>
+    </element>
+</define>
+
+
+<define name="common-table-range-attlist" combine="interleave">
+    <choice>
+        <group>
+            <ref name="common-table-cell-address-attlist"/>
+        </group>
+        <group>
+            <ref name="common-table-cell-range-address-attlist"/>
+        </group>
+    </choice>
+</define>
+<define name="common-table-cell-address-attlist" combine="interleave">
+    <attribute name="table:column">
+        <ref name="integer"/>
+    </attribute>
+    <attribute name="table:row">
+        <ref name="integer"/>
+    </attribute>
+    <attribute name="table:table">
+        <ref name="integer"/>
+    </attribute>
+</define>
+<define name="common-table-cell-range-address-attlist" combine="interleave">
+    <attribute name="table:start-column">
+        <ref name="integer"/>
+    </attribute>
+    <attribute name="table:start-row">
+        <ref name="integer"/>
+    </attribute>
+    <attribute name="table:start-table">
+        <ref name="integer"/>
+    </attribute>
+    <attribute name="table:end-column">
+        <ref name="integer"/>
+    </attribute>
+    <attribute name="table:end-row">
+        <ref name="integer"/>
+    </attribute>
+    <attribute name="table:end-table">
+        <ref name="integer"/>
+    </attribute>
+</define>
+<define name="table-change-track-table-cell" combine="interleave">
+    <element name="table:change-track-table-cell">
+        <ref name="table-change-track-table-cell-attlist"/>
+        <zeroOrMore>
+            <ref name="text-p"/>
+        </zeroOrMore>
+    </element>
+</define>
+<define name="table-change-track-table-cell-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:cell-address">
+            <ref name="cellAddress"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-change-track-table-cell-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:matrix-covered" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-change-track-table-cell-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:formula">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="table:number-matrix-columns-spanned">
+            <ref name="positiveInteger"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="table:number-matrix-rows-spanned">
+            <ref name="positiveInteger"/>
+        </attribute>
+    </optional>
+    <optional>
+        <ref name="common-value-and-type-attlist"/>
+    </optional>
+</define>
+<define name="table-cell-content-change">
+    <element name="table:cell-content-change">
+        <ref name="common-table-change-attlist"/>
+        <ref name="table-cell-address"/>
+        <ref name="office-change-info"/>
+        <optional>
+            <ref name="table-dependencies"/>
+        </optional>
+        <optional>
+            <ref name="table-deletions"/>
+        </optional>
+        <ref name="table-previous"/>
+    </element>
+</define>
+<define name="table-cell-address">
+    <element name="table:cell-address">
+        <ref name="common-table-cell-address-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="table-previous">
+    <element name="table:previous">
+        <optional>
+            <attribute name="table:id">
+                <ref name="string"/>
+            </attribute>
+        </optional>
+        <ref name="table-change-track-table-cell"/>
+    </element>
+</define>
+<define name="common-table-change-attlist" combine="interleave">
+    <attribute name="table:id">
+        <ref name="string"/>
+    </attribute>
+</define>
+<define name="common-table-change-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:acceptance-state" a:defaultValue="pending">
+            <choice>
+                <value>accepted</value>
+                <value>rejected</value>
+                <value>pending</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="common-table-change-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:rejecting-change-id">
+            <ref name="string"/> 
+        </attribute>
+    </optional>
+</define>
+<define name="style-handout-master">
+    <element name="style:handout-master">
+        <ref name="common-presentation-header-footer-attlist"/>
+        <ref name="style-handout-master-attlist"/>
+        <zeroOrMore>
+            <ref name="shape"/>
+        </zeroOrMore>
+    </element>
+</define>
+<define name="style-handout-master-attlist" combine="interleave">
+    <optional>
+        <attribute name="presentation:presentation-page-layout-name">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-handout-master-attlist" combine="interleave">
+    <attribute name="style:page-layout-name">
+        <ref name="styleNameRef"/>
+    </attribute>
+</define>
+<define name="style-handout-master-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:style-name">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-layer-set">
+    <element name="draw:layer-set">
+        <zeroOrMore>
+            <ref name="draw-layer"/>
+        </zeroOrMore>
+    </element>
+</define>
+<define name="draw-layer">
+    <element name="draw:layer">
+        <ref name="draw-layer-attlist"/>
+        <optional>
+            <ref name="svg-title"/>
+        </optional>
+        <optional>
+            <ref name="svg-desc"/>
+        </optional>
+    </element>
+</define>
+<define name="draw-layer-attlist" combine="interleave">
+    <attribute name="draw:name">
+        <ref name="string"/>
+    </attribute>
+</define>
+<define name="draw-layer-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:protected" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-layer-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:display" a:defaultValue="always">
+            <choice>
+                <value>always</value>
+                <value>screen</value>
+                <value>printer</value>
+                <value>none</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-page">
+    <element name="draw:page">
+        <ref name="common-presentation-header-footer-attlist"/>
+        <ref name="draw-page-attlist"/>
+        <optional>
+            <ref name="office-forms"/>
+        </optional>
+        <zeroOrMore>
+            <ref name="shape"/>
+        </zeroOrMore>
+        <optional>
+            <choice>
+                <ref name="presentation-animations"/>
+                <ref name="animation-element"/>
+            </choice>
+        </optional>
+        <optional>
+            <ref name="presentation-notes"/>
+        </optional>
+    </element>
+</define>
+<define name="draw-page-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:name">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-page-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:style-name">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-page-attlist" combine="interleave">
+    <attribute name="draw:master-page-name">
+        <ref name="styleNameRef"/>
+    </attribute>
+</define>
+<define name="draw-page-attlist" combine="interleave">
+    <optional>
+        <attribute name="presentation:presentation-page-layout-name">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-presentation-header-footer-attlist" combine="interleave">
+    <optional>
+        <attribute name="presentation:use-header-name">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-presentation-header-footer-attlist" combine="interleave">
+    <optional>
+        <attribute name="presentation:use-footer-name">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-presentation-header-footer-attlist" combine="interleave">
+    <optional>
+        <attribute name="presentation:use-date-time-name">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-page-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:id">
+            <ref name="ID"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-page-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:nav-order">
+            <ref name="IDREFS"/>
+        </attribute>
+    </optional>
+</define>
+<define name="shape">
+    <choice>
+        <ref name="draw-rect"/>
+        <ref name="draw-line"/>
+        <ref name="draw-polyline"/>
+        <ref name="draw-polygon"/>
+        <ref name="draw-regular-polygon"/>
+        <ref name="draw-path"/>
+        <ref name="draw-circle"/>
+        <ref name="draw-ellipse"/>
+        <ref name="draw-g"/>
+        <ref name="draw-page-thumbnail"/>
+        <ref name="draw-frame"/>
+        <ref name="draw-measure"/>
+        <ref name="draw-caption"/>
+        <ref name="draw-connector"/>
+        <ref name="draw-control"/>
+        <ref name="dr3d-scene"/>
+        <ref name="draw-custom-shape"/>
+    </choice>
+</define>
+<define name="draw-rect">
+    <element name="draw:rect">
+        <ref name="draw-rect-attlist"/>
+        <ref name="common-draw-position-attlist"/>
+        <ref name="common-draw-size-attlist"/>
+        <ref name="common-draw-shape-with-text-and-styles-attlist"/>
+        <ref name="common-draw-caption-id-attlist"/>
+        <optional>
+            <ref name="svg-title"/>
+        </optional>
+        <optional>
+            <ref name="svg-desc"/>
+        </optional>
+        <optional>
+            <ref name="office-event-listeners"/>
+        </optional>
+        <zeroOrMore>
+            <ref name="draw-glue-point"/>
+        </zeroOrMore>
+        <ref name="draw-text"/>
+    </element>
+</define>
+<define name="draw-rect-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:corner-radius">
+            <ref name="nonNegativeLength"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-line">
+    <element name="draw:line">
+        <ref name="draw-line-attlist"/>
+        <ref name="common-draw-shape-with-text-and-styles-attlist"/>
+        <ref name="common-draw-caption-id-attlist"/>
+        <optional>
+            <ref name="svg-title"/>
+        </optional>
+        <optional>
+            <ref name="svg-desc"/>
+        </optional>
+        <optional>
+            <ref name="office-event-listeners"/>
+        </optional>
+        <zeroOrMore>
+            <ref name="draw-glue-point"/>
+        </zeroOrMore>
+        <ref name="draw-text"/>
+    </element>
+</define>
+<define name="draw-line-attlist" combine="interleave">
+    <attribute name="svg:x1">
+        <ref name="coordinate"/>
+    </attribute>
+    <attribute name="svg:y1">
+        <ref name="coordinate"/>
+    </attribute>
+</define>
+<define name="draw-line-attlist" combine="interleave">
+    <attribute name="svg:x2">
+        <ref name="coordinate"/>
+    </attribute>
+    <attribute name="svg:y2">
+        <ref name="coordinate"/>
+    </attribute>
+</define>
+<define name="draw-polyline">
+    <element name="draw:polyline">
+        <ref name="common-draw-points-attlist"/>
+        <ref name="common-draw-position-attlist"/>
+        <ref name="common-draw-size-attlist"/>
+        <ref name="common-draw-viewbox-attlist"/>
+        <ref name="common-draw-shape-with-text-and-styles-attlist"/>
+        <ref name="common-draw-caption-id-attlist"/>
+        <optional>
+            <ref name="svg-title"/>
+        </optional>
+        <optional>
+            <ref name="svg-desc"/>
+        </optional>
+        <optional>
+            <ref name="office-event-listeners"/>
+        </optional>
+        <zeroOrMore>
+            <ref name="draw-glue-point"/>
+        </zeroOrMore>
+        <ref name="draw-text"/>
+    </element>
+</define>
+<define name="common-draw-points-attlist">
+    <attribute name="draw:points">
+        <ref name="points"/>
+    </attribute>
+</define>
+<define name="draw-polygon">
+    <element name="draw:polygon">
+        <ref name="common-draw-points-attlist"/>
+        <ref name="common-draw-position-attlist"/>
+        <ref name="common-draw-size-attlist"/>
+        <ref name="common-draw-viewbox-attlist"/>
+        <ref name="common-draw-shape-with-text-and-styles-attlist"/>
+        <ref name="common-draw-caption-id-attlist"/>
+        <optional>
+            <ref name="svg-title"/>
+        </optional>
+        <optional>
+            <ref name="svg-desc"/>
+        </optional>
+        <optional>
+            <ref name="office-event-listeners"/>
+        </optional>
+        <zeroOrMore>
+            <ref name="draw-glue-point"/>
+        </zeroOrMore>
+        <ref name="draw-text"/>
+    </element>
+</define>
+<define name="draw-regular-polygon">
+    <element name="draw:regular-polygon">
+        <ref name="draw-regular-polygon-attlist"/>
+        <ref name="common-draw-position-attlist"/>
+        <ref name="common-draw-size-attlist"/>
+        <ref name="common-draw-shape-with-text-and-styles-attlist"/>
+        <ref name="common-draw-caption-id-attlist"/>
+        <optional>
+            <ref name="svg-title"/>
+        </optional>
+        <optional>
+            <ref name="svg-desc"/>
+        </optional>
+        <optional>
+            <ref name="office-event-listeners"/>
+        </optional>
+        <zeroOrMore>
+            <ref name="draw-glue-point"/>
+        </zeroOrMore>
+        <ref name="draw-text"/>
+    </element>
+</define>
+<define name="draw-regular-polygon-attlist" combine="interleave">
+    <choice>
+        <attribute name="draw:concave">
+            <value>false</value>
+        </attribute>
+        <group>
+            <attribute name="draw:concave">
+                <value>true</value>
+            </attribute>
+            <ref name="draw-regular-polygon-sharpness-attlist"/>
+        </group>
+    </choice>
+</define>
+<define name="draw-regular-polygon-attlist" combine="interleave">
+    <attribute name="draw:corners">
+        <ref name="positiveInteger"/>
+    </attribute>
+</define>
+<define name="draw-regular-polygon-sharpness-attlist">
+    <attribute name="draw:sharpness">
+        <ref name="percent"/>
+    </attribute>
+</define>
+<define name="draw-path">
+    <element name="draw:path">
+        <ref name="common-draw-path-data-attlist"/>
+        <ref name="common-draw-position-attlist"/>
+        <ref name="common-draw-size-attlist"/>
+        <ref name="common-draw-viewbox-attlist"/>
+        <ref name="common-draw-shape-with-text-and-styles-attlist"/>
+        <ref name="common-draw-caption-id-attlist"/>
+        <optional>
+            <ref name="svg-title"/>
+        </optional>
+        <optional>
+            <ref name="svg-desc"/>
+        </optional>
+        <optional>
+            <ref name="office-event-listeners"/>
+        </optional>
+        <zeroOrMore>
+            <ref name="draw-glue-point"/>
+        </zeroOrMore>
+        <ref name="draw-text"/>
+    </element>
+</define>
+<define name="common-draw-path-data-attlist">
+    <attribute name="svg:d">
+        <ref name="pathData"/>
+    </attribute>
+</define>
+<define name="draw-circle">
+    <element name="draw:circle">
+        <ref name="draw-circle-attlist"/>
+        <ref name="common-draw-circle-ellipse-attlist"/>
+        <ref name="common-draw-position-attlist"/>
+        <ref name="common-draw-size-attlist"/>
+        <ref name="common-draw-shape-with-text-and-styles-attlist"/>
+        <ref name="common-draw-caption-id-attlist"/>
+        <optional>
+            <ref name="svg-title"/>
+        </optional>
+        <optional>
+            <ref name="svg-desc"/>
+        </optional>
+        <optional>
+            <ref name="office-event-listeners"/>
+        </optional>
+        <zeroOrMore>
+            <ref name="draw-glue-point"/>
+        </zeroOrMore>
+        <ref name="draw-text"/>
+    </element>
+</define>
+<define name="common-draw-circle-ellipse-attlist" combine="interleave">
+    <optional>
+        <attribute name="svg:cx">
+            <ref name="coordinate"/>
+        </attribute>
+        <attribute name="svg:cy">
+            <ref name="coordinate"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-circle-attlist" combine="interleave">
+    <optional>
+        <attribute name="svg:r">
+            <ref name="length"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-draw-circle-ellipse-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:kind" a:defaultValue="full">
+            <choice>
+                <value>full</value>
+                <value>section</value>
+                <value>cut</value>
+                <value>arc</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="common-draw-circle-ellipse-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:start-angle">
+            <ref name="double"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-draw-circle-ellipse-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:end-angle">
+            <ref name="double"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-ellipse">
+    <element name="draw:ellipse">
+        <ref name="common-draw-circle-ellipse-attlist"/>
+        <ref name="draw-ellipse-attlist"/>
+        <ref name="common-draw-position-attlist"/>
+        <ref name="common-draw-size-attlist"/>
+        <ref name="common-draw-shape-with-text-and-styles-attlist"/>
+        <ref name="common-draw-caption-id-attlist"/>
+        <optional>
+            <ref name="svg-title"/>
+        </optional>
+        <optional>
+            <ref name="svg-desc"/>
+        </optional>
+        <optional>
+            <ref name="office-event-listeners"/>
+        </optional>
+        <zeroOrMore>
+            <ref name="draw-glue-point"/>
+        </zeroOrMore>
+        <ref name="draw-text"/>
+    </element>
+</define>
+<define name="draw-ellipse-attlist" combine="interleave">
+    <optional>
+        <attribute name="svg:rx">
+            <ref name="length"/>
+        </attribute>
+        <attribute name="svg:ry">
+            <ref name="length"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-connector">
+    <element name="draw:connector">
+        <ref name="draw-connector-attlist"/>
+        <ref name="common-draw-shape-with-text-and-styles-attlist"/>
+        <ref name="common-draw-caption-id-attlist"/>
+        <optional>
+            <ref name="svg-title"/>
+        </optional>
+        <optional>
+            <ref name="svg-desc"/>
+        </optional>
+        <optional>
+            <ref name="office-event-listeners"/>
+        </optional>
+        <zeroOrMore>
+            <ref name="draw-glue-point"/>
+        </zeroOrMore>
+        <ref name="draw-text"/>
+    </element>
+</define>
+<define name="draw-connector-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:type" a:defaultValue="standard">
+            <choice>
+                <value>standard</value>
+                <value>lines</value>
+                <value>line</value>
+                <value>curve</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-connector-attlist" combine="interleave">
+    <optional>
+        <attribute name="svg:x1">
+            <ref name="coordinate"/>
+        </attribute>
+        <attribute name="svg:y1">
+            <ref name="coordinate"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-connector-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:start-shape">
+            <ref name="IDREF"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-connector-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:start-glue-point">
+            <ref name="nonNegativeInteger"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-connector-attlist" combine="interleave">
+    <optional>
+        <attribute name="svg:x2">
+            <ref name="coordinate"/>
+        </attribute>
+        <attribute name="svg:y2">
+            <ref name="coordinate"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-connector-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:end-shape">
+            <ref name="IDREF"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-connector-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:end-glue-point">
+            <ref name="nonNegativeInteger"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-connector-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:line-skew">
+            <list>
+                <ref name="length"/>
+                <optional>
+                    <ref name="length"/>
+                    <optional>
+                        <ref name="length"/>
+                    </optional>
+                </optional>
+            </list>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-caption">
+    <element name="draw:caption">
+        <ref name="draw-caption-attlist"/>
+        <ref name="common-draw-position-attlist"/>
+        <ref name="common-draw-size-attlist"/>
+        <ref name="common-draw-shape-with-text-and-styles-attlist"/>
+        <ref name="common-draw-caption-id-attlist"/>
+        <optional>
+            <ref name="svg-title"/>
+        </optional>
+        <optional>
+            <ref name="svg-desc"/>
+        </optional>
+        <optional>
+            <ref name="office-event-listeners"/>
+        </optional>
+        <zeroOrMore>
+            <ref name="draw-glue-point"/>
+        </zeroOrMore>
+        <ref name="draw-text"/>
+    </element>
+</define>
+<define name="draw-caption-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:caption-point-x">
+            <ref name="coordinate"/>
+        </attribute>
+        <attribute name="draw:caption-point-y">
+            <ref name="coordinate"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-caption-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:corner-radius">
+            <ref name="nonNegativeLength"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-measure">
+    <element name="draw:measure">
+        <ref name="draw-measure-attlist"/>
+        <ref name="common-draw-shape-with-text-and-styles-attlist"/>
+        <ref name="common-draw-caption-id-attlist"/>
+        <optional>
+            <ref name="svg-title"/>
+        </optional>
+        <optional>
+            <ref name="svg-desc"/>
+        </optional>
+        <optional>
+            <ref name="office-event-listeners"/>
+        </optional>
+        <zeroOrMore>
+            <ref name="draw-glue-point"/>
+        </zeroOrMore>
+        <ref name="draw-text"/>
+    </element>
+</define>
+<define name="draw-measure-attlist" combine="interleave">
+    <attribute name="svg:x1">
+        <ref name="coordinate"/>
+    </attribute>
+    <attribute name="svg:y1">
+        <ref name="coordinate"/>
+    </attribute>
+</define>
+<define name="draw-measure-attlist" combine="interleave">
+    <attribute name="svg:x2">
+        <ref name="coordinate"/>
+    </attribute>
+    <attribute name="svg:y2">
+        <ref name="coordinate"/>
+    </attribute>
+</define>
+<define name="draw-control">
+    <element name="draw:control">
+        <ref name="draw-control-attlist"/>
+        <ref name="common-draw-position-attlist"/>
+        <ref name="common-draw-size-attlist"/>
+        <ref name="common-draw-shape-with-text-and-styles-attlist"/>    
+        <ref name="common-draw-caption-id-attlist"/>
+        <optional>
+            <ref name="svg-title"/>
+        </optional>
+        <optional>
+            <ref name="svg-desc"/>
+        </optional>
+        <zeroOrMore>
+            <ref name="draw-glue-point"/>
+        </zeroOrMore>
+    </element>
+</define>
+<define name="draw-control-attlist" combine="interleave">
+    <attribute name="draw:control">
+        <ref name="IDREF"/>
+    </attribute>
+</define>
+<define name="draw-page-thumbnail">
+    <element name="draw:page-thumbnail">
+        <ref name="draw-page-thumbnail-attlist"/>
+        <ref name="common-draw-position-attlist"/>
+        <ref name="common-draw-size-attlist"/>
+        <ref name="presentation-shape-attlist"/>
+        <ref name="common-draw-shape-with-styles-attlist"/>
+        <ref name="common-draw-caption-id-attlist"/>
+        <optional>
+            <ref name="svg-title"/>
+        </optional>
+        <optional>
+            <ref name="svg-desc"/>
+        </optional>
+    </element>
+</define>
+<define name="draw-page-thumbnail-attlist">
+    <optional>
+        <attribute name="draw:page-number">
+            <ref name="positiveInteger"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-g">
+    <element name="draw:g">
+        <ref name="draw-g-attlist"/>
+        <ref name="common-draw-z-index-attlist"/>
+        <ref name="common-draw-name-attlist"/>
+        <ref name="common-draw-id-attlist"/>
+        <ref name="common-draw-style-name-attlist"/>
+        <ref name="common-text-spreadsheet-shape-attlist"/>
+        <ref name="common-draw-caption-id-attlist"/>
+        <optional>
+            <ref name="svg-title"/>
+        </optional>
+        <optional>
+            <ref name="svg-desc"/>
+        </optional>
+        <optional>
+            <ref name="office-event-listeners"/>
+        </optional>
+        <zeroOrMore>
+            <ref name="draw-glue-point"/>
+        </zeroOrMore>
+        <zeroOrMore>
+            <ref name="shape"/>
+        </zeroOrMore>
+    </element>
+</define>
+<define name="draw-g-attlist" combine="interleave">
+    <optional>
+        <attribute name="svg:y">
+            <ref name="coordinate"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-draw-name-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:name">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-draw-caption-id-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:caption-id">
+            <ref name="IDREF"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-draw-position-attlist">
+    <optional>
+        <attribute name="svg:x">
+            <ref name="coordinate"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="svg:y">
+            <ref name="coordinate"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-draw-size-attlist">
+    <optional>
+        <attribute name="svg:width">
+            <ref name="length"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="svg:height">
+            <ref name="length"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-draw-transform-attlist">
+    <optional>
+        <attribute name="draw:transform">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-draw-viewbox-attlist">
+    <attribute name="svg:viewBox">
+        <list>
+            <ref name="integer"/>
+            <ref name="integer"/>
+            <ref name="integer"/>
+            <ref name="integer"/>
+        </list>
+    </attribute>
+</define>
+<define name="common-draw-style-name-attlist">
+    <choice>
+        <group>
+            <optional>
+                <attribute name="draw:style-name">
+                    <ref name="styleNameRef"/>
+                </attribute>
+            </optional>
+            <optional>
+                <attribute name="draw:class-names">
+                    <ref name="styleNameRefs"/>
+                </attribute>
+            </optional>
+        </group>
+        <group>
+            <optional>
+                <attribute name="presentation:style-name">
+                    <ref name="styleNameRef"/>
+                </attribute>
+            </optional>
+            <optional>
+                <attribute name="presentation:class-names">
+                    <ref name="styleNameRefs"/>
+                </attribute>
+            </optional>
+        </group>
+    </choice>
+</define>
+<define name="common-draw-text-style-name-attlist">
+    <optional>
+        <attribute name="draw:text-style-name">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-draw-layer-name-attlist">
+    <optional>
+        <attribute name="draw:layer">
+            <data type="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-draw-id-attlist">
+    <optional>
+        <attribute name="draw:id">
+            <ref name="ID"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-draw-z-index-attlist">
+    <optional>
+        <attribute name="draw:z-index">
+            <ref name="nonNegativeInteger"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-text-spreadsheet-shape-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:end-cell-address">
+            <ref name="cellAddress"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="table:end-x">
+            <ref name="coordinate"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="table:end-y">
+            <ref name="coordinate"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-text-spreadsheet-shape-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:table-background">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-text-spreadsheet-shape-attlist" combine="interleave">
+    <ref name="common-text-anchor-attlist"/>
+</define>
+
+<define name="common-text-anchor-attlist" combine="interleave">
+    <optional>
+        <attribute name="text:anchor-type">
+            <choice>
+                <value>page</value>
+                <value>frame</value>
+                <value>paragraph</value>
+                <value>char</value>
+                <value>as-char</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="common-text-anchor-attlist" combine="interleave">
+    <optional>
+        <attribute name="text:anchor-page-number">
+            <ref name="positiveInteger"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-text">
+    <zeroOrMore>
+        <choice>
+            <ref name="text-p"/>
+            <ref name="text-list"/>
+        </choice>
+    </zeroOrMore>
+</define>
+<define name="common-draw-shape-with-styles-attlist">
+    <ref name="common-draw-z-index-attlist"/>
+    <ref name="common-draw-id-attlist"/>
+    <ref name="common-draw-layer-name-attlist"/>
+    <ref name="common-draw-style-name-attlist"/>
+    <ref name="common-draw-transform-attlist"/>
+    <ref name="common-draw-name-attlist"/>
+    <ref name="common-text-spreadsheet-shape-attlist"/>
+</define>
+<define name="common-draw-shape-with-text-and-styles-attlist">
+    <ref name="common-draw-shape-with-styles-attlist"/>
+    <ref name="common-draw-text-style-name-attlist"/>
+</define>
+<define name="draw-glue-point">
+    <element name="draw:glue-point">
+        <ref name="draw-glue-point-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="draw-glue-point-attlist" combine="interleave">
+    <attribute name="draw:id">
+        <ref name="nonNegativeInteger"/>
+    </attribute>
+</define>
+<define name="draw-glue-point-attlist" combine="interleave">
+    <attribute name="svg:x">
+        <choice>
+            <ref name="distance"/> 
+            <ref name="percent"/>
+        </choice>
+    </attribute>
+    <attribute name="svg:y">
+        <choice>
+            <ref name="distance"/> 
+            <ref name="percent"/>
+        </choice>
+    </attribute>
+</define>
+<define name="draw-glue-point-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:align">
+            <choice>
+                <value>top-left</value>
+                <value>top</value>
+                <value>top-right</value>
+                <value>left</value>
+                <value>center</value>
+                <value>right</value>
+                <value>bottom-left</value>
+                <value>bottom-right</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-glue-points-attlist" combine="interleave">
+    <attribute name="draw:escape-direction">
+        <choice>
+            <value>auto</value>
+            <value>left</value>
+            <value>right</value>
+            <value>up</value>
+            <value>down</value>
+            <value>horizontal</value>
+            <value>vertical</value>
+        </choice>
+    </attribute>
+</define>
+<define name="svg-title">
+    <element name="svg:title">
+        <text/>
+    </element>
+</define>
+<define name="svg-desc">
+    <element name="svg:desc">
+        <text/>
+    </element>
+</define>
+<define name="draw-frame">
+    <element name="draw:frame">
+        <ref name="common-draw-shape-with-text-and-styles-attlist"/>
+        <ref name="common-draw-position-attlist"/>
+        <ref name="common-draw-rel-size-attlist"/>
+        <ref name="common-draw-caption-id-attlist"/>
+        <ref name="presentation-shape-attlist"/>
+        <ref name="draw-frame-attlist"/>
+        <zeroOrMore>
+            <choice>
+                <ref name="draw-text-box"/>
+                <ref name="draw-image"/>
+                <ref name="draw-object"/>
+                <ref name="draw-object-ole"/>
+                <ref name="draw-applet"/>
+                <ref name="draw-floating-frame"/>
+                <ref name="draw-plugin"/>
+            </choice>
+        </zeroOrMore>
+        <optional>
+            <ref name="office-event-listeners"/>
+        </optional>
+        <zeroOrMore>
+            <ref name="draw-glue-point"/>
+        </zeroOrMore>
+        <optional>
+            <ref name="draw-image-map"/>
+        </optional>
+        <optional>
+            <ref name="svg-title"/>
+        </optional>
+        <optional>
+            <ref name="svg-desc"/>
+        </optional>
+        <optional>
+            <choice>
+                <ref name="draw-contour-polygon"/>
+                <ref name="draw-contour-path"/>
+            </choice>
+        </optional>
+    </element>
+</define>
+<define name="common-draw-rel-size-attlist">
+    <ref name="common-draw-size-attlist"/>
+    <optional>
+        <attribute name="style:rel-width">
+            <choice>
+                <ref name="percent"/>
+                <value>scale</value>
+                <value>scale-min</value>
+            </choice>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="style:rel-height">
+            <choice>
+                <ref name="percent"/>
+                <value>scale</value>
+                <value>scale-min</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-frame-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:copy-of">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-text-box">
+    <element name="draw:text-box">
+        <ref name="draw-text-box-attlist"/>
+        <zeroOrMore>
+            <ref name="text-content"/>
+        </zeroOrMore>
+    </element>
+</define>
+<define name="draw-text-box-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:chain-next-name">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-text-box-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:corner-radius">
+            <ref name="nonNegativeLength"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-text-box-attlist" combine="interleave">
+    <optional>
+        <attribute name="fo:min-height">
+            <choice>
+                <ref name="length"/>
+                <ref name="percent"/>
+            </choice>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="fo:min-width">
+            <choice>
+                <ref name="length"/>
+                <ref name="percent"/>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-text-box-attlist" combine="interleave">
+    <optional>
+        <attribute name="fo:max-height">
+            <choice>
+                <ref name="length"/>
+                <ref name="percent"/>
+            </choice>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="fo:max-width">
+            <choice>
+                <ref name="length"/>
+                <ref name="percent"/>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-text-box-attlist" combine="interleave">
+    <optional>
+        <ref name="text-id"/>
+    </optional>
+</define>
+<define name="draw-image">
+    <element name="draw:image">
+        <ref name="draw-image-attlist"/>
+        <choice>
+            <ref name="common-draw-data-attlist"/>
+            <ref name="office-binary-data"/>
+        </choice>
+        <ref name="draw-text"/>
+    </element>
+</define>
+<define name="common-draw-data-attlist" combine="interleave">
+    <group>
+        <attribute name="xlink:href">
+            <ref name="anyURI"/>
+        </attribute>
+        <optional>
+            <attribute name="xlink:type" a:defaultValue="simple">
+                <choice>
+                    <value>simple</value>
+                </choice>
+            </attribute>
+        </optional>
+        <optional>
+            <attribute name="xlink:show" a:defaultValue="embed">
+                <choice>
+                    <value>embed</value>
+                </choice>
+            </attribute>
+        </optional>
+        <optional>
+            <attribute name="xlink:actuate" a:defaultValue="onLoad">
+                <choice>
+                    <value>onLoad</value>
+                </choice>
+            </attribute>
+        </optional>
+    </group>
+</define>
+
+<define name="office-binary-data">
+    <element name="office:binary-data">
+        <ref name="base64Binary"/>
+    </element>
+</define>
+<define name="draw-image-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:filter-name">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-object">
+    <element name="draw:object">
+        <ref name="draw-object-attlist"/>
+        <choice>
+            <ref name="common-draw-data-attlist"/>
+            <ref name="office-document"/>
+            <ref name="math-math"/>
+        </choice>
+    </element>
+</define>
+
+<define name="draw-object-ole">
+    <element name="draw:object-ole">
+        <ref name="draw-object-ole-attlist"/>
+        <choice>
+            <ref name="common-draw-data-attlist"/>
+            <ref name="office-binary-data"/>
+        </choice>
+    </element>
+</define>
+<define name="draw-object-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:notify-on-update-of-ranges">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-object-ole-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:class-id"/>
+    </optional>
+</define>
+<define name="draw-applet">
+    <element name="draw:applet">
+        <ref name="draw-applet-attlist"/>
+        <optional>
+            <ref name="common-draw-data-attlist"/>
+        </optional>
+        <zeroOrMore>
+            <ref name="draw-param"/>
+        </zeroOrMore>
+    </element>
+</define>
+<define name="draw-applet-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:code"/>
+    </optional>
+</define>
+<define name="draw-applet-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:object"/>
+    </optional>
+</define>
+<define name="draw-applet-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:archive"/>
+    </optional>
+</define>
+<define name="draw-applet-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:may-script" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-plugin">
+    <element name="draw:plugin">
+        <ref name="draw-plugin-attlist"/>
+        <ref name="common-draw-data-attlist"/>
+        <zeroOrMore>
+            <ref name="draw-param"/>
+        </zeroOrMore>
+    </element>
+</define>
+<define name="draw-plugin-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:mime-type"/>
+    </optional>
+</define>
+<define name="draw-param">
+    <element name="draw:param">
+        <ref name="draw-param-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="draw-param-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:name"/>
+    </optional>
+</define>
+<define name="draw-param-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:value"/>
+    </optional>
+</define>
+<define name="draw-floating-frame">
+    <element name="draw:floating-frame">
+        <ref name="draw-floating-frame-attlist"/>
+        <ref name="common-draw-data-attlist"/>
+    </element>
+</define>
+<define name="draw-floating-frame-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:frame-name">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-contour-polygon">
+    <element name="draw:contour-polygon">
+        <ref name="common-contour-attlist"/>
+        <ref name="common-draw-size-attlist"/>
+        <ref name="common-draw-viewbox-attlist"/>
+        <ref name="common-draw-points-attlist"/>
+        <empty/>
+    </element>
+</define>
+
+<define name="draw-contour-path">
+    <element name="draw:contour-path">
+        <ref name="common-contour-attlist"/>
+        <ref name="common-draw-size-attlist"/>
+        <ref name="common-draw-viewbox-attlist"/>
+        <ref name="common-draw-path-data-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="common-contour-attlist" combine="interleave">
+    <attribute name="draw:recreate-on-edit">
+        <ref name="boolean"/>
+    </attribute>
+</define>
+<define name="draw-a">
+    <element name="draw:a">
+        <ref name="draw-a-attlist"/>
+        <ref name="draw-frame"/>
+    </element>
+</define>
+<define name="draw-a-attlist" combine="interleave">
+    <attribute name="xlink:href">
+        <ref name="anyURI"/>
+    </attribute>
+    <optional>
+        <attribute name="xlink:type" a:defaultValue="simple">
+            <value>simple</value>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="xlink:actuate" a:defaultValue="onRequest">
+            <choice>
+                <value>onRequest</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-a-attlist" combine="interleave">
+    <optional>
+        <attribute name="office:target-frame-name">
+            <ref name="targetFrameName"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="xlink:show">
+            <choice>
+                <value>new</value>
+                <value>replace</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-a-attlist" combine="interleave">
+    <optional>
+        <attribute name="office:name">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-a-attlist" combine="interleave">
+    <optional>
+        <attribute name="office:title">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-a-attlist" combine="interleave">
+    <optional>
+        <attribute name="office:server-map" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-image-map">
+    <element name="draw:image-map">
+        <zeroOrMore>
+            <choice>
+                <ref name="draw-area-rectangle"/>
+                <ref name="draw-area-circle"/>
+                <ref name="draw-area-polygon"/>
+            </choice>
+        </zeroOrMore>
+    </element>
+</define>
+<define name="draw-area-rectangle">
+    <element name="draw:area-rectangle">
+        <ref name="common-draw-area-attlist"/>
+        <attribute name="svg:x">
+            <ref name="coordinate"/>
+        </attribute>
+        <attribute name="svg:y">
+            <ref name="coordinate"/>
+        </attribute>
+        <attribute name="svg:width">
+            <ref name="length"/>
+        </attribute>
+        <attribute name="svg:height">
+            <ref name="length"/>
+        </attribute>
+        <optional>
+            <ref name="svg-title"/>
+        </optional>
+        <optional>
+            <ref name="svg-desc"/>
+        </optional>
+        <optional>
+            <ref name="office-event-listeners"/>
+        </optional>
+    </element>
+</define>
+<define name="draw-area-circle">
+    <element name="draw:area-circle">
+        <ref name="common-draw-area-attlist"/>
+        <attribute name="svg:cx">
+            <ref name="coordinate"/>
+        </attribute>
+        <attribute name="svg:cy">
+            <ref name="coordinate"/>
+        </attribute>
+        <attribute name="svg:r">
+            <ref name="length"/>
+        </attribute>
+        <optional>
+            <ref name="svg-title"/>
+        </optional>
+        <optional>
+            <ref name="svg-desc"/>
+        </optional>
+        <optional>
+            <ref name="office-event-listeners"/>
+        </optional>
+    </element>
+</define>
+<define name="draw-area-polygon">
+    <element name="draw:area-polygon">
+        <ref name="common-draw-area-attlist"/>
+        <attribute name="svg:x">
+            <ref name="coordinate"/>
+        </attribute>
+        <attribute name="svg:y">
+            <ref name="coordinate"/>
+        </attribute>
+        <attribute name="svg:width">
+            <ref name="length"/>
+        </attribute>
+        <attribute name="svg:height">
+            <ref name="length"/>
+        </attribute>
+        <ref name="common-draw-viewbox-attlist"/>
+        <ref name="common-draw-points-attlist"/>
+        <optional>
+            <ref name="svg-title"/>
+        </optional>
+        <optional>
+            <ref name="svg-desc"/>
+        </optional>
+        <optional>
+            <ref name="office-event-listeners"/>
+        </optional>
+    </element>
+</define>
+<define name="common-draw-area-attlist" combine="interleave">
+    <optional>
+        <attribute name="xlink:href">
+            <ref name="anyURI"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="xlink:type" a:defaultValue="simple">
+            <choice>
+                <value>simple</value>
+            </choice>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="office:target-frame-name">
+            <ref name="targetFrameName"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="xlink:show">
+            <choice>
+                <value>new</value>
+                <value>replace</value>
+            </choice>
+            </attribute>
+    </optional>
+</define>
+<define name="common-draw-area-attlist" combine="interleave">
+    <optional>
+        <attribute name="office:name">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-draw-area-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:nohref">
+            <choice>
+                <value>nohref</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="dr3d-scene">
+    <element name="dr3d:scene">
+        <ref name="dr3d-scene-attlist"/>
+        <ref name="common-draw-position-attlist"/>
+        <ref name="common-draw-size-attlist"/>
+        <ref name="common-draw-style-name-attlist"/>
+        <ref name="common-draw-z-index-attlist"/>
+        <ref name="common-draw-id-attlist"/>
+        <ref name="common-draw-layer-name-attlist"/>
+        <ref name="common-text-spreadsheet-shape-attlist"/>
+        <ref name="common-dr3d-transform-attlist"/>
+        <ref name="common-draw-caption-id-attlist"/>
+        <optional>
+            <ref name="svg-title"/>
+        </optional>
+        <optional>
+            <ref name="svg-desc"/>
+        </optional>
+        <zeroOrMore>
+            <ref name="dr3d-light"/>
+        </zeroOrMore>
+        <zeroOrMore>
+            <ref name="shapes3d"/>
+        </zeroOrMore>
+    </element>
+</define>
+
+<define name="shapes3d">
+    <choice>
+        <ref name="dr3d-scene"/>
+        <ref name="dr3d-extrude"/>
+        <ref name="dr3d-sphere"/>
+        <ref name="dr3d-rotate"/>
+        <ref name="dr3d-cube"/>
+    </choice>
+</define>
+<define name="dr3d-scene-attlist" combine="interleave">
+    <optional>
+        <attribute name="dr3d:vrp">
+            <ref name="vector3D"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="dr3d:vpn">
+            <ref name="vector3D"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="dr3d:vup">
+            <ref name="vector3D"/>
+        </attribute>
+    </optional>
+</define>
+<define name="dr3d-scene-attlist" combine="interleave">
+    <optional>
+        <attribute name="dr3d:projection">
+            <choice>
+                <value>parallel</value>
+                <value>perspective</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="dr3d-scene-attlist" combine="interleave">
+    <optional>
+        <attribute name="dr3d:distance">
+            <ref name="length"/>
+        </attribute>
+    </optional>
+</define>
+<define name="dr3d-scene-attlist" combine="interleave">
+    <optional>
+        <attribute name="dr3d:focal-length">
+            <ref name="length"/>
+        </attribute>
+    </optional>
+</define>
+<define name="dr3d-scene-attlist" combine="interleave">
+    <optional>
+        <attribute name="dr3d:shadow-slant">
+            <ref name="nonNegativeInteger"/>
+        </attribute>
+    </optional>
+</define>
+<define name="dr3d-scene-attlist" combine="interleave">
+    <optional>
+        <attribute name="dr3d:shade-mode">
+            <choice>
+                <value>flat</value>
+                <value>phong</value>
+                <value>gouraud</value>
+                <value>draft</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="dr3d-scene-attlist" combine="interleave">
+    <optional>
+        <attribute name="dr3d:ambient-color">
+            <ref name="color"/>
+        </attribute>
+    </optional>
+</define>
+<define name="dr3d-scene-attlist" combine="interleave">
+    <optional>
+        <attribute name="dr3d:lighting-mode">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-dr3d-transform-attlist">
+    <optional>
+        <attribute name="dr3d:transform"/>
+    </optional>
+</define>
+<define name="dr3d-light">
+    <element name="dr3d:light">
+        <ref name="dr3d-light-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="dr3d-light-attlist" combine="interleave">
+    <optional>
+        <attribute name="dr3d:diffuse-color">
+            <ref name="color"/>
+        </attribute>
+    </optional>
+</define>
+<define name="dr3d-light-attlist" combine="interleave">
+    <attribute name="dr3d:direction">
+        <ref name="vector3D"/>
+    </attribute>
+</define>
+<define name="dr3d-light-attlist" combine="interleave">
+    <optional>
+        <attribute name="dr3d:enabled">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="dr3d-light-attlist" combine="interleave">
+    <optional>
+        <attribute name="dr3d:specular">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="dr3d-cube">
+    <element name="dr3d:cube">
+        <ref name="dr3d-cube-attlist"/>
+        <ref name="common-draw-z-index-attlist"/>
+        <ref name="common-draw-id-attlist"/>
+        <ref name="common-draw-layer-name-attlist"/>
+        <ref name="common-draw-style-name-attlist"/>
+        <ref name="common-dr3d-transform-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="dr3d-cube-attlist" combine="interleave">
+    <optional>
+        <attribute name="dr3d:min-edge">
+            <ref name="vector3D"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="dr3d:max-edge">
+            <ref name="vector3D"/>
+        </attribute>
+    </optional>
+</define>
+<define name="dr3d-sphere">
+    <element name="dr3d:sphere">
+        <ref name="dr3d-sphere-attlist"/>
+        <ref name="common-draw-z-index-attlist"/>
+        <ref name="common-draw-id-attlist"/>
+        <ref name="common-draw-layer-name-attlist"/>
+        <ref name="common-draw-style-name-attlist"/>
+        <ref name="common-dr3d-transform-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="dr3d-sphere-attlist" combine="interleave">
+    <optional>
+        <attribute name="dr3d:center">
+            <ref name="vector3D"/>
+        </attribute>
+    </optional>
+</define>
+<define name="dr3d-sphere-attlist" combine="interleave">
+    <optional>
+        <attribute name="dr3d:size">
+            <ref name="vector3D"/>
+        </attribute>
+    </optional>
+</define>
+<define name="dr3d-extrude">
+    <element name="dr3d:extrude">
+        <ref name="common-draw-path-data-attlist"/>
+        <ref name="common-draw-viewbox-attlist"/>
+        <ref name="common-draw-id-attlist"/>
+        <ref name="common-draw-z-index-attlist"/>
+        <ref name="common-draw-layer-name-attlist"/>
+        <ref name="common-draw-style-name-attlist"/>
+        <ref name="common-dr3d-transform-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="dr3d-rotate">
+    <element name="dr3d:rotate">
+        <ref name="common-draw-viewbox-attlist"/>
+        <ref name="common-draw-path-data-attlist"/>
+        <ref name="common-draw-z-index-attlist"/>
+        <ref name="common-draw-id-attlist"/>
+        <ref name="common-draw-layer-name-attlist"/>
+        <ref name="common-draw-style-name-attlist"/>
+        <ref name="common-dr3d-transform-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="draw-custom-shape">
+    <element name="draw:custom-shape">
+        <ref name="draw-custom-shape-attlist"/>
+        <ref name="common-draw-position-attlist"/>
+        <ref name="common-draw-size-attlist"/>
+        <ref name="common-draw-shape-with-text-and-styles-attlist"/>
+        <ref name="common-draw-caption-id-attlist"/>
+        <optional>
+            <ref name="svg-title"/>
+        </optional>
+        <optional>
+            <ref name="svg-desc"/>
+        </optional>
+        <optional>
+            <ref name="office-event-listeners"/>
+        </optional>
+        <zeroOrMore>
+            <ref name="draw-glue-point"/>
+        </zeroOrMore>
+        <ref name="draw-text"/>
+        <optional>
+            <ref name="draw-enhanced-geometry"/>
+        </optional>
+    </element>
+</define>
+<define name="draw-custom-shape-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:engine">
+            <ref name="namespacedToken"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-custom-shape-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:data">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-enhanced-geometry">
+    <element name="draw:enhanced-geometry">
+        <ref name="draw-enhanced-geometry-attlist"/>
+        <zeroOrMore>
+            <ref name="draw-equation"/>
+        </zeroOrMore>
+        <zeroOrMore>
+            <ref name="draw-handle"/>
+        </zeroOrMore>
+    </element>
+</define>
+<define name="draw-enhanced-geometry-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:type" a:defaultValue="non-primitive">
+            <ref name="custom-shape-type"/>
+        </attribute>
+    </optional>
+</define>
+
+<define name="custom-shape-type">
+    <choice>
+        <value>non-primitive</value>
+        <ref name="string"/>
+    </choice>
+</define>
+<define name="draw-enhanced-geometry-attlist" combine="interleave">
+    <optional>
+        <attribute name="svg:viewBox">
+            <list>
+                <ref name="integer"/>
+                <ref name="integer"/>
+                <ref name="integer"/>
+                <ref name="integer"/>
+            </list>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-enhanced-geometry-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:mirror-vertical" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="draw:mirror-horizontal" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-enhanced-geometry-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:text-rotate-angle" a:defaultValue="0">
+            <ref name="double"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-enhanced-geometry-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:extrusion-allowed" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-enhanced-geometry-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:text-path-allowed" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-enhanced-geometry-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:concentric-gradient-fill-allowed"
+                    a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-enhanced-geometry-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:extrusion" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-enhanced-geometry-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:extrusion-brightness" a:defaultValue="33%">
+            <ref name="percent"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-enhanced-geometry-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:extrusion-depth" a:defaultValue="36pt 0">
+            <list>
+                <ref name="length"/>
+                <ref name="double"/>
+            </list>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-enhanced-geometry-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:extrusion-diffusion" a:defaultValue="0%">
+            <ref name="percent"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-enhanced-geometry-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:extrusion-number-of-line-segments"
+                   a:defaultValue="30">
+            <ref name="integer"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-enhanced-geometry-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:extrusion-light-face" a:defaultValue="true">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-enhanced-geometry-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:extrusion-first-light-harsh"
+                   a:defaultValue="true">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-enhanced-geometry-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:extrusion-second-light-harsh"
+                   a:defaultValue="true">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-enhanced-geometry-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:extrusion-first-light-level"
+                   a:defaultValue="66%">
+            <ref name="percent"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-enhanced-geometry-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:extrusion-second-light-level"
+                   a:defaultValue="66%">
+            <ref name="percent"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-enhanced-geometry-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:extrusion-first-light-direction"
+                   a:defaultValue="(5 0 1)">
+            <ref name="vector3D"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-enhanced-geometry-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:extrusion-second-light-direction"
+                   a:defaultValue="(-5 0 1)">
+            <ref name="vector3D"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-enhanced-geometry-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:extrusion-metal" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-enhanced-geometry-attlist" combine="interleave">
+    <optional>
+        <attribute name="dr3d:shade-mode" a:defaultValue="flat">
+            <choice>
+                <value>flat</value>
+                <value>phong</value>
+                <value>gouraud</value>
+                <value>draft</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-enhanced-geometry-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:extrusion-rotation-angle" a:defaultValue="0 0">
+            <list>
+                <ref name="double"/>
+                <ref name="double"/>
+            </list>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-enhanced-geometry-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:extrusion-rotation-center">
+            <ref name="vector3D"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-enhanced-geometry-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:extrusion-shininess" a:defaultValue="50%">
+            <ref name="percent"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-enhanced-geometry-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:extrusion-skew" a:defaultValue="50 45">
+            <list>
+                <ref name="double"/>
+                <ref name="double"/>
+            </list>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-enhanced-geometry-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:extrusion-specularity" a:defaultValue="0%">
+            <ref name="percent"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-enhanced-geometry-attlist" combine="interleave">
+    <optional>
+        <attribute name="dr3d:projection" a:defaultValue="parallel">
+            <choice>
+                <value>parallel</value>
+                <value>perspective</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-enhanced-geometry-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:extrusion-viewpoint" 
+                   a:defaultValue="3.5cm -3.5cm 25cm">
+            <ref name="point3D"/>
+        </attribute>
+    </optional>
+</define>
+
+<define name="point3D">
+    <data type="string"/>
+</define>
+<define name="draw-enhanced-geometry-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:extrusion-origin" a:defaultValue="0.5 -0.5">
+            <list>
+                <ref name="double"/>
+                <ref name="double"/>
+            </list>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-enhanced-geometry-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:extrusion-color" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-enhanced-geometry-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:enhanced-path">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-enhanced-geometry-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:path-stretchpoint-x" a:defaultValue="0">
+            <ref name="double"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="draw:path-stretchpoint-y" a:defaultValue="0">
+            <ref name="double"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-enhanced-geometry-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:text-areas">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-enhanced-geometry-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:glue-points">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-enhanced-geometry-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:glue-point-type" a:defaultValue="none">
+            <choice>
+                <value>none</value>
+                <value>segments</value>
+                <value>rectangle</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-enhanced-geometry-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:glue-point-leaving-directions"/>
+    </optional>
+</define>
+<define name="draw-enhanced-geometry-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:text-path" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-enhanced-geometry-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:text-path-mode" a:defaultValue="normal">
+            <choice>
+                <value>normal</value>
+                <value>path</value>
+                <value>shape</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-enhanced-geometry-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:text-path-scale" a:defaultValue="path">
+            <choice>
+                <value>path</value>
+                <value>shape</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-enhanced-geometry-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:text-path-same-letter-heights"
+                   a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-enhanced-geometry-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:modifiers">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-equation">
+    <element name="draw:equation">
+        <ref name="draw-equation-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="draw-equation-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:name">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-equation-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:formula">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-handle">
+    <element name="draw:handle">
+        <ref name="draw-handle-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="draw-handle-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:handle-mirror-vertical" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-handle-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:handle-mirror-horizontal" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-handle-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:handle-switched" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-handle-attlist" combine="interleave">
+    <attribute name="draw:handle-position">
+        <ref name="string"/>
+    </attribute>
+</define>
+<define name="draw-handle-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:handle-range-x-minimum">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-handle-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:handle-range-x-maximum">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-handle-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:handle-range-y-minimum">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-handle-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:handle-range-y-maximum">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-handle-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:handle-polar">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-handle-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:handle-radius-range-minimum">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-handle-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:handle-radius-range-maximum">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="presentation-shape-attlist" combine="interleave">
+    <optional>
+        <attribute name="presentation:class">
+            <ref name="presentation-classes"/>
+        </attribute>
+    </optional>
+</define>
+<define name="presentation-classes">
+    <choice>
+        <value>title</value>
+        <value>outline</value>
+        <value>subtitle</value>
+        <value>text</value>
+        <value>graphic</value>
+        <value>object</value>
+        <value>chart</value>
+        <value>table</value>
+        <value>orgchart</value>
+        <value>page</value>
+        <value>notes</value>
+        <value>handout</value>
+        <value>header</value>
+        <value>footer</value>
+        <value>date-time</value>
+        <value>page-number</value>
+    </choice>
+</define>
+<define name="presentation-shape-attlist" combine="interleave">
+    <optional>
+        <attribute name="presentation:placeholder">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="presentation-shape-attlist" combine="interleave">
+    <optional>
+        <attribute name="presentation:user-transformed">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="presentation-animations">
+    <element name="presentation:animations">
+        <zeroOrMore>
+            <choice>
+                <ref name="presentation-animation-elements"/>
+                <ref name="presentation-animation-group"/>
+            </choice>
+        </zeroOrMore>
+    </element>
+</define>
+<define name="presentation-animation-elements">
+    <choice>
+        <ref name="presentation-show-shape"/>
+        <ref name="presentation-show-text"/>
+        <ref name="presentation-hide-shape"/>
+        <ref name="presentation-hide-text"/>
+        <ref name="presentation-dim"/>
+        <ref name="presentation-play"/>
+    </choice>
+</define>
+<define name="presentation-sound">
+    <element name="presentation:sound">
+        <ref name="presentation-sound-attlist"/>
+        <attribute name="xlink:href">
+            <ref name="anyURI"/>
+        </attribute>
+        <optional>
+            <attribute name="xlink:type" a:defaultValue="simple">
+                <choice>
+                    <value>simple</value>
+                </choice>
+            </attribute>
+        </optional>
+        <optional>
+            <attribute name="xlink:actuate" a:defaultValue="onRequest">
+                <choice>
+                    <value>onRequest</value>
+                </choice>
+            </attribute>
+        </optional>
+        <optional>
+            <attribute name="xlink:show">
+                <choice>
+                    <value>new</value>
+                    <value>replace</value>
+                </choice>
+            </attribute>
+        </optional>
+        <empty/>
+    </element>
+</define>
+<define name="presentation-sound-attlist" combine="interleave">
+    <optional>
+        <attribute name="presentation:play-full">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="presentation-show-shape">
+    <element name="presentation:show-shape">
+        <ref name="common-presentation-effect-attlist"/>
+        <optional>
+            <ref name="presentation-sound"/>
+        </optional>
+    </element>
+</define>
+<define name="common-presentation-effect-attlist" combine="interleave">
+    <attribute name="draw:shape-id">
+        <ref name="IDREF"/>
+    </attribute>
+</define>
+<define name="common-presentation-effect-attlist" combine="interleave">
+    <optional>
+        <attribute name="presentation:effect" a:defaultValue="none">
+            <ref name="presentationEffects"/>
+        </attribute>
+    </optional>
+</define>
+<define name="presentationEffects">
+    <choice>
+        <value>none</value>
+        <value>fade</value>
+        <value>move</value>
+        <value>stripes</value>
+        <value>open</value>
+        <value>close</value>
+        <value>dissolve</value>
+        <value>wavyline</value>
+        <value>random</value>
+        <value>lines</value>
+        <value>laser</value>
+        <value>appear</value>
+        <value>hide</value>
+        <value>move-short</value>
+        <value>checkerboard</value>
+        <value>rotate</value>
+        <value>stretch</value>
+    </choice>
+</define>
+<define name="common-presentation-effect-attlist" combine="interleave">
+    <optional>
+        <attribute name="presentation:direction" a:defaultValue="none">
+            <ref name="presentationEffectDirections"/>
+        </attribute>
+    </optional>
+</define>
+<define name="presentationEffectDirections">
+    <choice>
+        <value>none</value>
+        <value>from-left</value>
+        <value>from-top</value>
+        <value>from-right</value>
+        <value>from-bottom</value>
+        <value>from-center</value>
+        <value>from-upper-left</value>
+        <value>from-upper-right</value>
+        <value>from-lower-left</value>
+        <value>from-lower-right</value>
+        <value>to-left</value>
+        <value>to-top</value>
+        <value>to-right</value>
+        <value>to-bottom</value>
+        <value>to-upper-left</value>
+        <value>to-upper-right</value>
+        <value>to-lower-right</value>
+        <value>to-lower-left</value>
+        <value>path</value>
+        <value>spiral-inward-left</value>
+        <value>spiral-inward-right</value>
+        <value>spiral-outward-left</value>
+        <value>spiral-outward-right</value>
+        <value>vertical</value>
+        <value>horizontal</value>
+        <value>to-center</value>
+        <value>clockwise</value>
+        <value>counter-clockwise</value>
+    </choice>
+</define>
+<define name="common-presentation-effect-attlist" combine="interleave">
+    <optional>
+        <attribute name="presentation:speed" a:defaultValue="medium">
+            <ref name="presentationSpeeds"/>
+        </attribute>
+    </optional>
+</define>
+<define name="presentationSpeeds">
+    <choice>
+        <value>slow</value>
+        <value>medium</value>
+        <value>fast</value>
+    </choice>
+</define>
+<define name="common-presentation-effect-attlist" combine="interleave">
+    <optional>
+        <attribute name="presentation:delay">
+            <ref name="duration"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-presentation-effect-attlist" combine="interleave">
+    <optional>
+        <attribute name="presentation:start-scale" a:defaultValue="100%">
+            <ref name="percent"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-presentation-effect-attlist" combine="interleave">
+    <optional>
+        <attribute name="presentation:path-id"/>
+    </optional>
+</define>
+<define name="presentation-show-text">
+    <element name="presentation:show-text">
+        <ref name="common-presentation-effect-attlist"/>
+        <optional>
+            <ref name="presentation-sound"/>
+        </optional>
+    </element>
+</define>
+<define name="presentation-hide-shape">
+    <element name="presentation:hide-shape">
+        <ref name="common-presentation-effect-attlist"/>
+        <optional>
+            <ref name="presentation-sound"/>
+        </optional>
+    </element>
+</define>
+<define name="presentation-hide-text">
+    <element name="presentation:hide-text">
+        <ref name="common-presentation-effect-attlist"/>
+        <optional>
+            <ref name="presentation-sound"/>
+        </optional>
+    </element>
+</define>
+<define name="presentation-dim">
+    <element name="presentation:dim">
+        <ref name="presentation-dim-attlist"/>
+        <optional>
+            <ref name="presentation-sound"/>
+        </optional>
+    </element>
+</define>
+<define name="presentation-dim-attlist" combine="interleave">
+    <attribute name="draw:shape-id">
+        <ref name="IDREF"/>
+    </attribute>
+</define>
+<define name="presentation-dim-attlist" combine="interleave">
+    <attribute name="draw:color">
+        <ref name="color"/>
+    </attribute>
+</define>
+<define name="presentation-play">
+    <element name="presentation:play">
+        <ref name="presentation-play-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="presentation-play-attlist" combine="interleave">
+    <attribute name="draw:shape-id">
+        <ref name="IDREF"/>
+    </attribute>
+    <optional>
+        <attribute name="presentation:speed" a:defaultValue="medium">
+            <ref name="presentationSpeeds"/>
+        </attribute>
+    </optional>
+</define>
+<define name="presentation-animation-group">
+    <element name="presentation:animation-group">
+        <zeroOrMore>
+            <ref name="presentation-animation-elements"/>
+        </zeroOrMore>
+    </element>
+</define>
+<define name="common-anim-attlist" combine="interleave">
+    <optional>
+        <attribute name="presentation:node-type" a:defaultValue="default">
+            <choice>
+                <value>default</value>
+                <value>on-click</value>
+                <value>with-previous</value>
+                <value>after-previous</value>
+                <value>timing-root</value>
+                <value>main-sequence</value>
+                <value>interactive-sequence</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="common-anim-attlist" combine="interleave">
+    <optional>
+        <attribute name="presentation:preset-id">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-anim-attlist" combine="interleave">
+    <optional>
+        <attribute name="presentation:preset-sub-type">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-anim-attlist" combine="interleave">
+    <optional>
+        <attribute name="presentation:preset-class" a:defaultValue="custom">
+            <choice>
+                <value>custom</value>
+                <value>entrance</value>
+                <value>exit</value>
+                <value>emphasis</value>
+                <value>motion-path</value>
+                <value>ole-action</value>
+                <value>media-call</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="common-anim-attlist" combine="interleave">
+    <optional>
+        <attribute name="presentation:master-element">
+            <ref name="IDREF"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-anim-attlist" combine="interleave">
+    <optional>
+        <attribute name="presentation:group-id">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="presentation-event-listener">
+    <element name="presentation:event-listener">
+        <ref name="presentation-event-listener-attlist"/>
+        <optional>
+            <ref name="presentation-sound"/>
+        </optional>
+    </element>
+</define>
+<define name="presentation-event-listener-attlist" combine="interleave">
+    <attribute name="script:event-name">
+        <ref name="string"/>
+    </attribute>
+</define>
+<define name="presentation-event-listener-attlist" combine="interleave">
+    <attribute name="presentation:action">
+        <choice>
+            <value>none</value>
+            <value>previous-page</value>
+            <value>next-page</value>
+            <value>first-page</value>
+            <value>last-page</value>
+            <value>hide</value>
+            <value>stop</value>
+            <value>execute</value>
+            <value>show</value>
+            <value>verb</value>
+            <value>fade-out</value>
+            <value>sound</value>
+        </choice>
+    </attribute>
+</define>
+<define name="presentation-event-listener-attlist" combine="interleave">
+    <optional>
+        <attribute name="presentation:effect" a:defaultValue="none">
+            <ref name="presentationEffects"/>
+        </attribute>
+    </optional>
+</define>
+<define name="presentation-event-listener-attlist" combine="interleave">
+    <optional>
+        <attribute name="presentation:direction" a:defaultValue="none">
+            <ref name="presentationEffectDirections"/>
+        </attribute>
+    </optional>
+</define>
+<define name="presentation-event-listener-attlist" combine="interleave">
+    <optional>
+        <attribute name="presentation:speed" a:defaultValue="medium">
+            <ref name="presentationSpeeds"/>
+        </attribute>
+    </optional>
+</define>
+<define name="presentation-event-listener-attlist" combine="interleave">
+    <optional>
+        <attribute name="presentation:start-scale" a:defaultValue="100%">
+            <ref name="percent"/>
+        </attribute>
+    </optional>
+</define>
+<define name="presentation-event-listener-attlist" combine="interleave">
+    <optional>
+        <attribute name="xlink:href">
+            <ref name="anyURI"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="xlink:type" a:defaultValue="simple">
+            <choice>
+                <value>simple</value>
+            </choice>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="xlink:show" a:defaultValue="embed">
+            <choice>
+                <value>embed</value>
+            </choice>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="xlink:actuate" a:defaultValue="onRequest">
+            <choice>
+                <value>onRequest</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="presentation-event-listener-attlist" combine="interleave">
+    <optional>
+        <attribute name="presentation:verb">
+            <ref name="nonNegativeInteger"/>
+        </attribute>
+    </optional>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="presentation:header">
+        <empty/>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="presentation:footer">
+        <empty/>
+    </element>
+</define>
+<define name="paragraph-content" combine="choice">
+    <element name="presentation:date-time">
+        <empty/>
+    </element>
+</define>
+<define name="presentation-decls">
+    <zeroOrMore>
+        <ref name="presentation-decl"/>
+    </zeroOrMore>
+</define>
+<define name="presentation-decl" combine="choice">
+    <element name="presentation:header-decl">
+        <ref name="presentation-header-decl-attlist"/>
+        <text/>
+    </element>
+</define>
+<define name="presentation-header-decl-attlist" combine="interleave">
+    <attribute name="presentation:name">
+        <ref name="string"/>
+    </attribute>
+</define>
+<define name="presentation-decl" combine="choice">
+    <element name="presentation:footer-decl">
+        <ref name="presentation-footer-decl-attlist"/>
+        <text/>
+    </element>
+</define>
+<define name="presentation-footer-decl-attlist" combine="interleave">
+    <attribute name="presentation:name">
+        <ref name="string"/>
+    </attribute>
+</define>
+<define name="presentation-decl" combine="choice">
+    <element name="presentation:date-time-decl">
+        <ref name="presentation-date-time-decl-attlist"/>
+        <text/>
+    </element>
+</define>
+<define name="presentation-date-time-decl-attlist" combine="interleave">
+    <attribute name="presentation:name">
+        <ref name="string"/>
+    </attribute>
+</define>
+<define name="presentation-date-time-decl-attlist" combine="interleave">
+    <attribute name="presentation:source">
+        <choice>
+            <value>fixed</value>
+            <value>current-date</value>
+        </choice>
+    </attribute>
+</define>
+<define name="presentation-date-time-decl-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:data-style-name">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+<define name="presentation-settings">
+    <optional>
+        <element name="presentation:settings">
+            <ref name="presentation-settings-attlist"/>
+            <zeroOrMore>
+                <ref name="presentation-show"/>
+            </zeroOrMore>
+        </element>
+    </optional>
+</define>
+<define name="presentation-settings-attlist" combine="interleave">
+    <optional>
+        <attribute name="presentation:start-page">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="presentation-settings-attlist" combine="interleave">
+    <optional>
+        <attribute name="presentation:show">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="presentation-settings-attlist" combine="interleave">
+    <optional>
+        <attribute name="presentation:full-screen" a:defaultValue="true">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="presentation-settings-attlist" combine="interleave">
+    <optional>
+        <attribute name="presentation:endless" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="presentation-settings-attlist" combine="interleave">
+    <optional>
+        <attribute name="presentation:pause">
+            <ref name="duration"/>
+        </attribute>
+    </optional>
+</define>
+<define name="presentation-settings-attlist" combine="interleave">
+    <optional>
+        <attribute name="presentation:show-logo" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="presentation-settings-attlist" combine="interleave">
+    <optional>
+        <attribute name="presentation:force-manual" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="presentation-settings-attlist" combine="interleave">
+    <optional>
+        <attribute name="presentation:mouse-visible" a:defaultValue="true">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="presentation-settings-attlist" combine="interleave">
+    <optional>
+        <attribute name="presentation:mouse-as-pen" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="presentation-settings-attlist" combine="interleave">
+    <optional>
+        <attribute name="presentation:start-with-navigator"
+                   a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="presentation-settings-attlist" combine="interleave">
+    <optional>
+        <attribute name="presentation:animations" a:defaultValue="enabled">
+            <choice>
+                <value>enabled</value>
+                <value>disabled</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="presentation-settings-attlist" combine="interleave">
+    <optional>
+        <attribute name="presentation:transition-on-click"
+                   a:defaultValue="enabled">
+            <choice>
+                <value>enabled</value>
+                <value>disabled</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="presentation-settings-attlist" combine="interleave">
+    <optional>
+        <attribute name="presentation:stay-on-top" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="presentation-settings-attlist" combine="interleave">
+    <optional>
+        <attribute name="presentation:show-end-of-presentation-slide"
+                   a:defaultValue="true">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="presentation-show">
+    <element name="presentation:show">
+        <ref name="presentation-show-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="presentation-show-attlist" combine="interleave">
+    <attribute name="presentation:name">
+        <ref name="string"/>
+    </attribute>
+</define>
+<define name="presentation-show-attlist" combine="interleave">
+    <attribute name="presentation:pages"/>
+</define>
+<define name="chart-chart">
+    <element name="chart:chart">
+        <ref name="chart-chart-attlist"/>
+        <optional>
+            <ref name="chart-title"/>
+        </optional>
+        <optional>
+            <ref name="chart-subtitle"/>
+        </optional>
+        <optional>
+            <ref name="chart-footer"/>
+        </optional>
+        <optional>
+            <ref name="chart-legend"/>
+        </optional>
+        <ref name="chart-plot-area"/>
+        <optional>
+            <ref name="table-table"/>
+        </optional>
+    </element>
+</define>
+<define name="chart-chart-attlist" combine="interleave">
+    <attribute name="chart:class">
+        <ref name="namespacedToken"/>
+    </attribute>
+</define>
+<define name="chart-chart-attlist" combine="interleave">
+    <ref name="common-draw-size-attlist"/>
+</define>
+<define name="chart-chart-attlist" combine="interleave">
+    <optional>
+        <attribute name="chart:column-mapping">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="chart-chart-attlist" combine="interleave">
+    <optional>
+        <attribute name="chart:row-mapping">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="chart-chart-attlist" combine="interleave">
+    <optional>
+        <attribute name="chart:style-name">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+<define name="chart-title">
+    <element name="chart:title">
+        <ref name="chart-title-attlist"/>
+        <optional>
+            <ref name="text-p"/>
+        </optional>
+    </element>
+</define>
+<define name="chart-title-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:cell-range">
+            <ref name="cellAddress"/>
+        </attribute>
+    </optional>
+</define>
+<define name="chart-title-attlist" combine="interleave">
+    <ref name="common-draw-position-attlist"/>
+</define>
+<define name="chart-title-attlist" combine="interleave">
+    <optional>
+        <attribute name="chart:style-name">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+<define name="chart-subtitle">
+    <element name="chart:subtitle">
+        <ref name="chart-title-attlist"/>
+        <optional>
+            <ref name="text-p"/>
+        </optional>
+    </element>
+</define>
+<define name="chart-footer">
+    <element name="chart:footer">
+        <ref name="chart-title-attlist"/>
+        <optional>
+            <ref name="text-p"/>
+        </optional>
+    </element>
+</define>
+<define name="chart-legend">
+    <element name="chart:legend">
+        <ref name="chart-legend-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="chart-legend-attlist" combine="interleave">
+    <choice>
+        <group>
+            <attribute name="chart:legend-position">
+                <choice>
+                    <value>start</value>
+                    <value>end</value>
+                    <value>top</value>
+                    <value>bottom</value>
+                </choice>
+            </attribute>
+            <optional>
+                <attribute name="chart:legend-align">
+                    <choice>
+                        <value>start</value>
+                        <value>center</value>
+                        <value>end</value>
+                    </choice>
+                </attribute>
+            </optional>
+        </group>
+        <attribute name="chart:legend-position">
+            <choice>
+                <value>top-start</value>
+                <value>bottom-start</value>
+                <value>top-end</value>
+                <value>bottom-end</value>
+            </choice>
+        </attribute>
+        <empty/>
+    </choice>
+</define>
+<define name="chart-legend-attlist" combine="interleave">
+    <ref name="common-draw-position-attlist"/>
+</define>
+<define name="chart-legend-attlist" combine="interleave">
+    <choice>
+        <attribute name="style:legend-expansion">
+            <choice>
+                <value>wide</value>
+                <value>high</value>
+                <value>balanced</value>
+            </choice>
+        </attribute>
+        <group>
+            <attribute name="style:legend-expansion">
+                <value>custom</value>
+            </attribute>
+            <attribute name="style:legend-expansion-aspect-ratio">
+                <ref name="double"/>
+            </attribute>
+        </group>
+        <empty/>
+    </choice>
+</define>
+<define name="chart-legend-attlist" combine="interleave">
+    <optional>
+        <attribute name="chart:style-name">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+<define name="chart-plot-area">
+    <element name="chart:plot-area">
+        <ref name="chart-plot-area-attlist"/>
+        <zeroOrMore>
+            <ref name="dr3d-light"/>
+        </zeroOrMore>
+        <zeroOrMore>
+            <ref name="chart-axis"/>
+        </zeroOrMore>
+        <zeroOrMore>
+            <ref name="chart-series"/>
+        </zeroOrMore>
+        <optional>
+            <ref name="chart-stock-gain-marker"/>
+        </optional>
+        <optional>
+            <ref name="chart-stock-loss-marker"/>
+        </optional>
+        <optional>
+            <ref name="chart-stock-range-line"/>
+        </optional>
+        <optional>
+            <ref name="chart-wall"/>
+        </optional>
+        <optional>
+            <ref name="chart-floor"/>
+        </optional>
+    </element>
+</define>
+<define name="chart-plot-area-attlist" combine="interleave">
+    <ref name="common-draw-position-attlist"/>
+    <ref name="common-draw-size-attlist"/>
+</define>
+<define name="chart-plot-area-attlist" combine="interleave">
+    <optional>
+        <attribute name="chart:style-name">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+<define name="chart-plot-area-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:cell-range-address">
+            <ref name="cellRangeAddress"/>
+        </attribute>
+    </optional>
+</define>
+<define name="chart-plot-area-attlist" combine="interleave">
+    <optional>
+        <attribute name="chart:data-source-has-labels" a:defaultValue="none">
+            <choice>
+                <value>none</value>
+                <value>row</value>
+                <value>column</value>
+                <value>both</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="chart-plot-area-attlist" combine="interleave">
+    <ref name="dr3d-scene-attlist"/>
+    <ref name="common-dr3d-transform-attlist"/>
+</define>
+<define name="chart-wall">
+    <element name="chart:wall">
+        <ref name="chart-wall-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="chart-wall-attlist" combine="interleave">
+    <optional>
+        <attribute name="svg:width">
+            <ref name="length"/>
+        </attribute>
+    </optional>
+</define>
+<define name="chart-wall-attlist" combine="interleave">
+    <optional>
+        <attribute name="chart:style-name">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+<define name="chart-floor">
+    <element name="chart:floor">
+        <ref name="chart-floor-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="chart-floor-attlist" combine="interleave">
+    <optional>
+        <attribute name="svg:width">
+            <ref name="length"/>
+        </attribute>
+    </optional>
+</define>
+<define name="chart-floor-attlist" combine="interleave">
+    <optional>
+        <attribute name="chart:style-name">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+<define name="chart-axis">
+    <element name="chart:axis">
+        <ref name="chart-axis-attlist"/>
+        <optional>
+            <ref name="chart-title"/>
+        </optional>
+        <optional>
+            <ref name="chart-categories"/>
+        </optional>
+        <zeroOrMore>
+            <ref name="chart-grid"/>
+        </zeroOrMore>
+    </element>
+</define>
+<define name="chart-axis-attlist" combine="interleave">
+    <attribute name="chart:dimension">
+        <choice>
+            <value>x</value>
+            <value>y</value>
+            <value>z</value>
+        </choice>
+    </attribute>
+</define>
+<define name="chart-axis-attlist" combine="interleave">
+    <optional>
+        <attribute name="chart:name">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="chart-axis-attlist" combine="interleave">
+    <optional>
+        <attribute name="chart:style-name">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+<define name="chart-grid">
+    <element name="chart:grid">
+        <ref name="chart-grid-attlist"/>
+    </element>
+</define>
+<define name="chart-grid-attlist" combine="interleave">
+    <optional>
+        <attribute name="chart:class" a:defaultValue="major">
+            <choice>
+                <value>major</value>
+                <value>minor</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="chart-grid-attlist" combine="interleave">
+    <optional>
+        <attribute name="chart:style-name">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+<define name="chart-series">
+    <element name="chart:series">
+        <ref name="chart-series-attlist"/>
+        <zeroOrMore>
+            <ref name="chart-domain"/>
+        </zeroOrMore>
+        <optional>
+            <ref name="chart-mean-value"/>
+        </optional>
+        <optional>
+            <ref name="chart-regression-curve"/>
+        </optional>
+        <optional>
+            <ref name="chart-error-indicator"/>
+        </optional>
+        <zeroOrMore>
+            <ref name="chart-data-point"/>
+        </zeroOrMore>
+    </element>
+</define>
+<define name="chart-series-attlist" combine="interleave">
+    <optional>
+        <attribute name="chart:values-cell-range-address">
+            <ref name="cellRangeAddress"/>
+        </attribute>
+    </optional>
+</define>
+<define name="chart-series-attlist" combine="interleave">
+    <optional>
+        <attribute name="chart:label-cell-address">
+            <ref name="cellAddress"/>
+        </attribute>
+    </optional>
+</define>
+<define name="chart-series-attlist" combine="interleave">
+    <optional>
+        <attribute name="chart:class">
+            <ref name="namespacedToken"/>
+        </attribute>
+    </optional>
+</define>
+<define name="chart-series-attlist" combine="interleave">
+    <optional>
+        <attribute name="chart:attached-axis">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="chart-series-attlist" combine="interleave">
+    <optional>
+        <attribute name="chart:style-name">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+<define name="chart-domain">
+    <element name="chart:domain">
+    <optional>
+        <attribute name="table:cell-range-address">
+            <ref name="cellRangeAddress"/>
+        </attribute>
+    </optional>
+    </element>
+</define>
+<define name="chart-categories">
+    <element name="chart:categories">
+    <optional>
+        <attribute name="table:cell-range-address">
+            <ref name="cellRangeAddress"/>
+        </attribute>
+    </optional>
+    </element>
+</define>
+<define name="chart-data-point">
+    <element name="chart:data-point">
+        <ref name="chart-data-point-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="chart-data-point-attlist" combine="interleave">
+    <optional>
+        <attribute name="chart:repeated">
+            <ref name="nonNegativeInteger"/>
+        </attribute>
+    </optional>
+</define>
+<define name="chart-data-point-attlist" combine="interleave">
+    <optional>
+        <attribute name="chart:style-name">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+
+<define name="chart-mean-value">
+    <element name="chart:mean-value">
+        <ref name="chart-mean-value-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="chart-mean-value-attlist" combine="interleave">
+    <optional>
+        <attribute name="chart:style-name">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+<define name="chart-error-indicator">
+    <element name="chart:error-indicator">
+        <ref name="chart-error-indicator-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="chart-error-indicator-attlist" combine="interleave">
+    <optional>
+        <attribute name="chart:style-name">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+<define name="chart-regression-curve">
+    <element name="chart:regression-curve">
+        <ref name="chart-regression-curve-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="chart-regression-curve-attlist" combine="interleave">
+    <optional>
+        <attribute name="chart:style-name">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+<define name="chart-stock-gain-marker">
+    <element name="chart:stock-gain-marker">
+        <ref name="common-stock-marker-attlist"/>
+    </element>
+</define>
+<define name="chart-stock-loss-marker">
+    <element name="chart:stock-loss-marker">
+        <ref name="common-stock-marker-attlist"/>
+    </element>
+</define>
+<define name="chart-stock-range-line">
+    <element name="chart:stock-range-line">
+        <ref name="common-stock-marker-attlist"/>
+    </element>
+</define>
+<define name="common-stock-marker-attlist">
+    <optional>
+        <attribute name="chart:style-name">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+<define name="office-forms">
+    <optional>
+        <element name="office:forms">
+            <ref name="office-forms-attlist"/>
+            <zeroOrMore>
+                <choice>
+                    <ref name="form-form"/>
+                    <ref name="xforms-model"/>
+                </choice>
+            </zeroOrMore>
+        </element>
+    </optional>
+</define>
+<define name="office-forms-attlist" combine="interleave">
+    <optional>
+        <attribute name="form:automatic-focus" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="office-forms-attlist" combine="interleave">
+    <optional>
+        <attribute name="form:apply-design-mode" a:defaultValue="true">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="form-form">
+    <element name="form:form">
+        <ref name="common-form-control-attlist"/>
+        <ref name="form-form-attlist"/>
+        <optional>
+            <ref name="form-properties"/>
+        </optional>
+        <optional>
+            <ref name="office-event-listeners"/>
+        </optional>
+        <zeroOrMore>
+            <choice>
+                <ref name="controls"/>
+                <ref name="form-form"/>
+            </choice>
+        </zeroOrMore>
+        <optional>
+            <ref name="form-connection-resource"/>
+        </optional>
+    </element>
+</define>
+<define name="form-form-attlist" combine="interleave">
+    <optional>
+        <attribute name="xlink:href">
+            <ref name="anyURI"/>
+        </attribute>
+        <optional>
+            <attribute name="xlink:type" a:defaultValue="simple">
+                <value>simple</value>
+            </attribute>
+        </optional>
+        <optional>
+            <attribute name="xlink:actuate" a:defaultValue="onRequest">
+                <value>onRequest</value>
+            </attribute>
+        </optional>
+    </optional>
+</define>
+<define name="form-form-attlist" combine="interleave">
+    <optional>
+        <attribute name="office:target-frame" a:defaultValue="_blank">
+            <ref name="targetFrameName"/>
+        </attribute>
+    </optional>
+</define>
+<define name="form-form-attlist" combine="interleave">
+    <optional>
+        <attribute name="form:method" a:defaultValue="get">
+            <choice>
+                <value>get</value>
+                <value>post</value>
+                <ref name="string"/>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="form-form-attlist" combine="interleave">
+    <optional>
+        <attribute name="form:enctype" 
+                    a:defaultValue="application/x-www-form-urlencoded">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="form-form-attlist" combine="interleave">
+    <optional>
+        <attribute name="form:allow-deletes" a:defaultValue="true">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="form-form-attlist" combine="interleave">
+    <optional>
+        <attribute name="form:allow-inserts" a:defaultValue="true">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="form-form-attlist" combine="interleave">
+    <optional>
+        <attribute name="form:allow-updates" a:defaultValue="true">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="form-form-attlist" combine="interleave">
+    <optional>
+        <attribute name="form:apply-filter" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="form-form-attlist" combine="interleave">
+    <optional>
+        <attribute name="form:command-type" a:defaultValue="command">
+            <choice>
+                <value>table</value>
+                <value>query</value>
+                <value>command</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="form-form-attlist" combine="interleave">
+    <optional>
+        <attribute name="form:command"/>
+    </optional>
+</define>
+<define name="form-form-attlist" combine="interleave">
+    <optional>
+        <attribute name="form:datasource">
+            <choice>
+                <ref name="anyURI"/>
+                <ref name="string"/>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="form-form-attlist" combine="interleave">
+    <optional>
+        <attribute name="form:master-fields">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="form-form-attlist" combine="interleave">
+    <optional>
+        <attribute name="form:detail-fields">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="form-form-attlist" combine="interleave">
+    <optional>
+        <attribute name="form:escape-processing" a:defaultValue="true">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="form-form-attlist" combine="interleave">
+    <optional>
+        <attribute name="form:filter">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="form-form-attlist" combine="interleave">
+    <optional>
+        <attribute name="form:ignore-result" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="form-form-attlist" combine="interleave">
+    <optional>
+        <attribute name="form:navigation-mode">
+            <ref name="navigation"/>
+        </attribute>
+    </optional>
+</define>
+
+<define name="navigation">
+    <choice>
+        <value>none</value>
+        <value>current</value>
+        <value>parent</value>
+    </choice>
+</define>
+<define name="form-form-attlist" combine="interleave">
+    <optional>
+        <attribute name="form:order">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="form-form-attlist" combine="interleave">
+    <optional>
+        <attribute name="form:tab-cycle">
+            <ref name="tab-cycles"/>
+        </attribute>
+    </optional>
+</define>
+<define name="tab-cycles">
+    <choice>
+        <value>records</value>
+        <value>current</value>
+        <value>page</value>
+    </choice>
+</define>
+<define name="form-connection-resource">
+    <element name="form:connection-resource">
+        <attribute name="xlink:href">
+            <ref name="anyURI"/>
+        </attribute>
+        <empty/>
+    </element>
+</define>
+<define name="xforms-model">
+    <element name="xforms:model">
+        <ref name="anyAttListOrElements"/>
+    </element>
+</define>
+<define name="column-controls" combine="choice">
+    <element name="form:text">
+        <ref name="form-text-attlist"/>
+        <ref name="common-form-control-content"/>
+    </element>
+</define>
+<define name="controls" combine="choice">
+    <ref name="column-controls"/>
+</define>
+<define name="form-text-attlist">
+    <ref name="form-control-attlist"/>
+    <ref name="common-current-value-attlist"/>
+    <ref name="common-disabled-attlist"/>
+    <ref name="common-maxlength-attlist"/>
+    <ref name="common-printable-attlist"/>
+    <ref name="common-readonly-attlist"/>
+    <ref name="common-tab-attlist"/>
+    <ref name="common-title-attlist"/>
+    <ref name="common-value-attlist"/>
+    <ref name="common-convert-empty-attlist"/>
+    <ref name="common-data-field-attlist"/>
+</define>
+<define name="form-control-attlist">
+    <ref name="common-form-control-attlist"/>
+    <ref name="common-control-id-attlist"/>
+    <ref name="xforms-bind-attlist"/>
+</define>
+<define name="common-form-control-content">
+    <optional>
+        <ref name="form-properties"/>
+    </optional>
+    <optional>
+        <ref name="office-event-listeners"/>
+    </optional>
+</define>
+<define name="column-controls" combine="choice">
+    <element name="form:textarea">
+        <ref name="form-textarea-attlist"/>
+        <ref name="common-form-control-content"/>
+        <zeroOrMore>
+            <ref name="text-p"/>
+        </zeroOrMore>
+    </element>
+</define>
+<define name="form-textarea-attlist">
+    <ref name="form-control-attlist"/>
+    <ref name="common-current-value-attlist"/>
+    <ref name="common-disabled-attlist"/>
+    <ref name="common-maxlength-attlist"/>
+    <ref name="common-printable-attlist"/>
+    <ref name="common-readonly-attlist"/>
+    <ref name="common-tab-attlist"/>
+    <ref name="common-title-attlist"/>
+    <ref name="common-value-attlist"/>
+    <ref name="common-convert-empty-attlist"/>
+    <ref name="common-data-field-attlist"/>
+</define>
+<define name="controls" combine="choice">
+    <element name="form:password">
+        <ref name="form-password-attlist"/>
+        <ref name="common-form-control-content"/>
+    </element>
+</define>
+<define name="form-password-attlist" combine="interleave">
+    <ref name="form-control-attlist"/>
+    <ref name="common-disabled-attlist"/>
+    <ref name="common-maxlength-attlist"/>
+    <ref name="common-printable-attlist"/>
+    <ref name="common-tab-attlist"/>
+    <ref name="common-title-attlist"/>
+    <ref name="common-value-attlist"/>
+    <ref name="common-convert-empty-attlist"/>
+</define>
+<define name="form-password-attlist" combine="interleave">
+    <optional>
+        <attribute name="form:echo-char" a:defaultValue="*">
+            <ref name="character"/>
+        </attribute>
+    </optional>
+</define>
+<define name="controls" combine="choice">
+    <element name="form:file">
+        <ref name="form-file-attlist"/>
+        <ref name="common-form-control-content"/>
+    </element>
+</define>
+<define name="form-file-attlist" combine="interleave">
+    <ref name="form-control-attlist"/>
+    <ref name="common-current-value-attlist"/>
+    <ref name="common-disabled-attlist"/>
+    <ref name="common-maxlength-attlist"/>
+    <ref name="common-printable-attlist"/>
+    <ref name="common-readonly-attlist"/>
+    <ref name="common-tab-attlist"/>
+    <ref name="common-title-attlist"/>
+    <ref name="common-value-attlist"/>
+</define>
+<define name="column-controls" combine="choice">
+    <element name="form:formatted-text">
+        <ref name="form-formatted-text-attlist"/>
+        <ref name="common-form-control-content"/>
+    </element>
+</define>
+<define name="form-formatted-text-attlist" combine="interleave">
+    <ref name="form-control-attlist"/>
+    <ref name="common-current-value-attlist"/>
+    <ref name="common-disabled-attlist"/>
+    <ref name="common-maxlength-attlist"/>
+    <ref name="common-printable-attlist"/>
+    <ref name="common-readonly-attlist"/>
+    <ref name="common-tab-attlist"/>
+    <ref name="common-title-attlist"/>
+    <ref name="common-value-attlist"/>
+    <ref name="common-convert-empty-attlist"/>
+    <ref name="common-data-field-attlist"/>
+</define>
+<define name="form-formatted-text-attlist" combine="interleave">
+    <optional>
+        <attribute name="form:max-value">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="form-formatted-text-attlist" combine="interleave">
+    <optional>
+        <attribute name="form:min-value">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="form-formatted-text-attlist" combine="interleave">
+    <optional>
+        <attribute name="form:validation" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="column-controls" combine="choice">
+    <element name="form:number">
+        <ref name="form-number-attlist"/>
+        <ref name="common-numeric-control-attlist"/>
+        <ref name="common-form-control-content"/>
+    </element>
+</define>
+<define name="common-numeric-control-attlist">
+    <ref name="form-control-attlist"/>
+    <ref name="common-disabled-attlist"/>
+    <ref name="common-maxlength-attlist"/>
+    <ref name="common-printable-attlist"/>
+    <ref name="common-readonly-attlist"/>
+    <ref name="common-tab-attlist"/>
+    <ref name="common-title-attlist"/>
+    <ref name="common-convert-empty-attlist"/>
+    <ref name="common-data-field-attlist"/>
+</define>
+<define name="form-number-attlist" combine="interleave">
+    <optional>
+        <attribute name="form:value">
+            <ref name="double"/>
+        </attribute>
+    </optional>
+</define>
+<define name="form-number-attlist" combine="interleave">
+    <optional>
+        <attribute name="form:current-value">
+            <ref name="double"/>
+        </attribute>
+    </optional>
+</define>
+<define name="form-number-attlist" combine="interleave">
+    <optional>
+        <attribute name="form:min-value">
+            <ref name="double"/>
+        </attribute>
+    </optional>
+</define>
+<define name="form-number-attlist" combine="interleave">
+    <optional>
+        <attribute name="form:max-value">
+            <ref name="double"/>
+        </attribute>
+    </optional>
+</define>
+<define name="column-controls" combine="choice">
+    <element name="form:date">
+        <ref name="form-date-attlist"/>
+        <ref name="common-numeric-control-attlist"/>
+        <ref name="common-form-control-content"/>
+    </element>
+</define>
+<define name="controls" combine="choice">
+    <element name="form:time">
+        <ref name="form-time-attlist"/>
+        <ref name="common-numeric-control-attlist"/>
+        <ref name="common-form-control-content"/>
+    </element>
+</define>
+<define name="form-date-attlist" combine="interleave">
+    <optional>
+        <attribute name="form:value">
+            <ref name="date"/>
+        </attribute>
+    </optional>
+</define>
+<define name="form-time-attlist" combine="interleave">
+    <optional>
+        <attribute name="form:value">
+            <ref name="time"/>
+        </attribute>
+    </optional>
+</define>
+<define name="form-date-attlist" combine="interleave">
+    <optional>
+        <attribute name="form:current-value">
+            <ref name="date"/>
+        </attribute>
+    </optional>
+</define>
+<define name="form-time-attlist" combine="interleave">
+    <optional>
+        <attribute name="form:current-value">
+            <ref name="time"/>
+        </attribute>
+    </optional>
+</define>
+<define name="form-date-attlist" combine="interleave">
+    <optional>
+        <attribute name="form:min-value">
+            <ref name="date"/>
+        </attribute>
+    </optional>
+</define>
+<define name="form-time-attlist" combine="interleave">
+    <optional>
+        <attribute name="form:min-value">
+            <ref name="time"/>
+        </attribute>
+    </optional>
+</define>
+<define name="form-date-attlist" combine="interleave">
+    <optional>
+        <attribute name="form:max-value">
+            <ref name="date"/>
+        </attribute>
+    </optional>
+</define>
+<define name="form-time-attlist" combine="interleave">
+    <optional>
+        <attribute name="form:max-value">
+            <ref name="time"/>
+        </attribute>
+    </optional>
+</define>
+<define name="controls" combine="choice">
+    <element name="form:fixed-text">
+        <ref name="form-fixed-text-attlist"/>
+        <ref name="common-form-control-content"/>
+    </element>
+</define>
+<define name="form-fixed-text-attlist" combine="interleave">
+    <ref name="form-control-attlist"/>
+    <ref name="for"/>
+    <ref name="common-disabled-attlist"/>
+    <ref name="label"/>
+    <ref name="common-printable-attlist"/>
+    <ref name="common-title-attlist"/>
+</define>
+<define name="form-fixed-text-attlist" combine="interleave">
+    <optional>
+        <attribute name="form:multi-line" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="column-controls" combine="choice">
+    <element name="form:combobox">
+        <ref name="form-combobox-attlist"/>
+        <ref name="common-form-control-content"/>
+        <zeroOrMore>
+            <ref name="form-item"/>
+        </zeroOrMore>
+    </element>
+</define>
+<define name="form-combobox-attlist" combine="interleave">
+    <ref name="form-control-attlist"/>
+    <ref name="common-current-value-attlist"/>
+    <ref name="common-disabled-attlist"/>
+    <ref name="dropdown"/>
+    <ref name="common-maxlength-attlist"/>
+    <ref name="common-printable-attlist"/>
+    <ref name="common-readonly-attlist"/>
+    <ref name="size"/>
+    <ref name="common-tab-attlist"/>
+    <ref name="common-title-attlist"/>
+    <ref name="common-value-attlist"/>
+    <ref name="common-convert-empty-attlist"/>
+    <ref name="common-data-field-attlist"/>
+    <ref name="list-source"/>
+    <ref name="list-source-type"/>
+</define>
+<define name="form-combobox-attlist" combine="interleave">
+    <optional>
+        <attribute name="form:auto-complete">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="form-item">
+    <element name="form:item">
+        <ref name="form-item-attlist"/>
+        <text/>
+    </element>
+</define>
+<define name="form-item-attlist" combine="interleave">
+    <ref name="label"/>
+</define>
+<define name="column-controls" combine="choice">
+    <element name="form:listbox">
+        <ref name="form-listbox-attlist"/>
+        <ref name="common-form-control-content"/>
+        <zeroOrMore>
+            <ref name="form-option"/>
+        </zeroOrMore>
+    </element>
+</define>
+<define name="form-listbox-attlist" combine="interleave">
+    <ref name="form-control-attlist"/>
+    <ref name="common-disabled-attlist"/>
+    <ref name="dropdown"/>
+    <ref name="common-printable-attlist"/>
+    <ref name="size"/>
+    <ref name="common-tab-attlist"/>
+    <ref name="common-title-attlist"/>
+    <ref name="bound-column"/>
+    <ref name="common-data-field-attlist"/>
+    <ref name="list-source"/>
+    <ref name="list-source-type"/>
+</define>
+<define name="form-listbox-attlist" combine="interleave">
+    <optional>
+        <attribute name="form:multiple" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="form-listbox-attlist" combine="interleave">
+    <optional>
+        <attribute name="form:xforms-list-source">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="form-option">
+    <element name="form:option">
+        <ref name="form-option-attlist"/>
+        <text/>
+    </element>
+</define>
+<define name="form-option-attlist" combine="interleave">
+    <ref name="current-selected"/>
+    <ref name="selected"/>
+    <ref name="label"/>
+    <ref name="common-value-attlist"/>
+</define>
+<define name="controls" combine="choice">
+    <element name="form:button">
+        <ref name="form-button-attlist"/>
+        <ref name="common-form-control-content"/>
+    </element>
+</define>
+<define name="form-button-attlist" combine="interleave">
+    <ref name="form-control-attlist"/>
+    <ref name="button-type"/>
+    <ref name="common-disabled-attlist"/>
+    <ref name="label"/>
+    <ref name="image-data"/>
+    <ref name="common-printable-attlist"/>
+    <ref name="common-tab-attlist"/>
+    <ref name="target-frame"/>
+    <ref name="target-location"/>
+    <ref name="common-title-attlist"/>
+    <ref name="common-value-attlist"/>
+    <ref name="common-form-relative-image-position-attlist"/>
+</define>
+<define name="form-button-attlist" combine="interleave">
+    <optional>
+        <attribute name="form:default-button" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="form-button-attlist" combine="interleave">
+    <optional>
+        <attribute name="form:toggle" a:default-value="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="form-button-attlist" combine="interleave">
+    <optional>
+        <attribute name="form:focus-on-click">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="form-button-attlist" combine="interleave">
+    <optional>
+        <attribute name="form:xforms-submission">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="controls" combine="choice">
+    <element name="form:image">
+        <ref name="form-image-attlist"/>
+        <ref name="common-form-control-content"/>
+    </element>
+</define>
+<define name="form-image-attlist" combine="interleave">
+    <ref name="form-control-attlist"/>
+    <ref name="button-type"/>
+    <ref name="common-disabled-attlist"/>
+    <ref name="image-data"/>
+    <ref name="common-printable-attlist"/>
+    <ref name="common-tab-attlist"/>
+    <ref name="target-frame"/>
+    <ref name="target-location"/>
+    <ref name="common-title-attlist"/>
+    <ref name="common-value-attlist"/>
+</define>
+<define name="column-controls" combine="choice">
+    <element name="form:checkbox">
+        <ref name="form-checkbox-attlist"/>
+        <ref name="common-form-control-content"/>
+    </element>
+</define>
+<define name="form-checkbox-attlist" combine="interleave">
+    <ref name="form-control-attlist"/>
+    <ref name="common-disabled-attlist"/>
+    <ref name="label"/>
+    <ref name="common-printable-attlist"/>
+    <ref name="common-tab-attlist"/>
+    <ref name="common-title-attlist"/>
+    <ref name="common-value-attlist"/>
+    <ref name="common-data-field-attlist"/>
+    <ref name="common-form-visual-effect-attlist"/>
+    <ref name="common-form-relative-image-position-attlist"/>
+</define>
+<define name="states">
+    <choice>
+        <value>unchecked</value>
+        <value>checked</value>
+        <value>unknown</value>
+    </choice>
+</define>
+<define name="form-checkbox-attlist" combine="interleave">
+    <optional>
+        <attribute name="form:current-state">
+            <ref name="states"/>
+        </attribute>
+    </optional>
+</define>
+<define name="form-checkbox-attlist" combine="interleave">
+    <optional>
+        <attribute name="form:is-tristate" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="form-checkbox-attlist" combine="interleave">
+    <optional>
+        <attribute name="form:state" a:defaultValue="unchecked">
+            <ref name="states"/>
+        </attribute>
+    </optional>
+</define>
+<define name="controls" combine="choice">
+    <element name="form:radio">
+        <ref name="form-radio-attlist"/>
+        <ref name="common-form-control-content"/>
+    </element>
+</define>
+<define name="form-radio-attlist" combine="interleave">
+    <ref name="form-control-attlist"/>
+    <ref name="current-selected"/>
+    <ref name="common-disabled-attlist"/>
+    <ref name="label"/>
+    <ref name="common-printable-attlist"/>
+    <ref name="selected"/>
+    <ref name="common-tab-attlist"/>
+    <ref name="common-title-attlist"/>
+    <ref name="common-value-attlist"/>
+    <ref name="common-data-field-attlist"/>
+    <ref name="common-form-visual-effect-attlist"/>
+    <ref name="common-form-relative-image-position-attlist"/>
+</define>
+<define name="controls" combine="choice">
+    <element name="form:frame">
+        <ref name="form-frame-attlist"/>
+        <ref name="common-form-control-content"/>
+    </element>
+</define>
+<define name="form-frame-attlist" combine="interleave">
+    <ref name="form-control-attlist"/>
+    <ref name="common-disabled-attlist"/>
+    <ref name="for"/>
+    <ref name="label"/>
+    <ref name="common-printable-attlist"/>
+    <ref name="common-title-attlist"/>
+</define>
+<define name="controls" combine="choice">
+    <element name="form:image-frame">
+        <ref name="form-image-frame-attlist"/>
+        <ref name="common-form-control-content"/>
+    </element>
+</define>
+<define name="form-image-frame-attlist" combine="interleave">
+    <ref name="form-control-attlist"/>
+    <ref name="common-disabled-attlist"/>
+    <ref name="image-data"/>
+    <ref name="common-printable-attlist"/>
+    <ref name="common-readonly-attlist"/>
+    <ref name="common-title-attlist"/>
+    <ref name="common-data-field-attlist"/>
+</define>
+<define name="controls" combine="choice">
+    <element name="form:hidden">
+        <ref name="form-hidden-attlist"/>
+        <ref name="common-form-control-content"/>
+    </element>
+</define>
+<define name="form-hidden-attlist" combine="interleave">
+    <ref name="form-control-attlist"/>
+    <ref name="common-value-attlist"/>
+</define>
+<define name="controls" combine="choice">
+    <element name="form:grid">
+        <ref name="form-grid-attlist"/>
+        <ref name="common-form-control-content"/>
+        <zeroOrMore>
+            <ref name="form-column"/>
+        </zeroOrMore>
+    </element>
+</define>
+<define name="form-grid-attlist" combine="interleave">
+    <ref name="form-control-attlist"/>
+    <ref name="common-disabled-attlist"/>
+    <ref name="common-printable-attlist"/>
+    <ref name="common-tab-attlist"/>
+    <ref name="common-title-attlist"/>
+</define>
+<define name="form-column">
+    <element name="form:column">
+        <ref name="form-column-attlist"/>
+        <oneOrMore>
+            <ref name="column-controls"/>
+        </oneOrMore>
+    </element>
+</define>
+<define name="form-column-attlist" combine="interleave">
+    <ref name="common-form-control-attlist"/>
+    <ref name="label"/>
+    <ref name="text-style-name"/>
+</define>
+<define name="text-style-name">
+    <optional>
+        <attribute name="form:text-style-name">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+<define name="controls" combine="choice">
+    <element name="form:value-range">
+        <ref name="form-value-range-attlist"/>
+        <ref name="common-form-control-content"/>
+    </element>
+</define>
+<define name="form-value-range-attlist" combine="interleave">
+    <ref name="form-control-attlist"/>
+    <ref name="common-disabled-attlist"/>
+    <ref name="common-printable-attlist"/>
+    <ref name="common-tab-attlist"/>
+    <ref name="common-title-attlist"/>
+    <ref name="common-value-attlist"/>
+</define>
+<define name="form-value-range-attlist" combine="interleave">
+    <optional>
+        <attribute name="form:max-value">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="form-value-range-attlist" combine="interleave">
+    <optional>
+        <attribute name="form:min-value">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="form-value-range-attlist" combine="interleave">
+    <optional>
+        <attribute name="form:step-size" a:defaultName="1">
+            <ref name="positiveInteger"/>
+        </attribute>
+    </optional>
+</define>
+<define name="form-value-range-attlist" combine="interleave">
+    <optional>
+        <attribute name="form:page-step-size">
+            <ref name="positiveInteger"/>
+        </attribute>
+    </optional>
+</define>
+<define name="form-value-range-attlist" combine="interleave">
+    <optional>
+        <attribute name="form:delay-for-repeat">
+            <ref name="duration"/>
+        </attribute>
+    </optional>
+</define>
+<define name="form-value-range-attlist" combine="interleave">
+    <optional>
+        <attribute name="form:orientation">
+            <choice>
+                <value>horizontal</value>
+                <value>vertical</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="controls" combine="choice">
+    <element name="form:generic-control">
+        <ref name="form-generic-control-attlist"/>
+        <ref name="common-form-control-content"/>
+    </element>
+</define>
+<define name="form-generic-control-attlist" combine="interleave">
+    <ref name="form-control-attlist"/>
+</define>
+<define name="common-form-control-attlist" combine="interleave">
+    <optional>
+        <attribute name="form:name">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-form-control-attlist" combine="interleave">
+    <optional>
+        <attribute name="form:control-implementation">
+            <ref name="namespacedToken"/>
+        </attribute>
+    </optional>
+</define>
+<define name="xforms-bind-attlist">
+    <optional>
+        <attribute name="xforms:bind">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="types">
+    <choice>
+        <value>submit</value>
+        <value>reset</value>
+        <value>push</value>
+        <value>url</value>
+    </choice>
+</define>
+<define name="button-type">
+    <optional>
+        <attribute name="form:button-type" a:defaultValue="push">
+            <ref name="types"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-control-id-attlist">
+    <attribute name="form:id">
+        <ref name="ID"/>
+    </attribute>
+</define>
+<define name="current-selected">
+    <optional>
+        <attribute name="form:current-selected" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-value-attlist">
+    <optional>
+        <attribute name="form:value">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-current-value-attlist">
+    <optional>
+        <attribute name="form:current-value">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-disabled-attlist">
+    <optional>
+        <attribute name="form:disabled" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="dropdown">
+    <optional>
+        <attribute name="form:dropdown" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="for">
+    <optional>
+        <attribute name="form:for">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="image-data">
+    <optional>
+        <attribute name="form:image-data">
+            <ref name="anyURI"/>
+        </attribute>
+    </optional>
+</define>
+<define name="label">
+    <optional>
+        <attribute name="form:label">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-maxlength-attlist">
+    <optional>
+        <attribute name="form:max-length">
+            <ref name="nonNegativeInteger"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-printable-attlist">
+    <optional>
+        <attribute name="form:printable" a:defaultValue="true">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-readonly-attlist">
+    <optional>
+        <attribute name="form:readonly" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="selected">
+    <optional>
+        <attribute name="form:selected" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="size">
+    <optional>
+        <attribute name="form:size">
+            <ref name="nonNegativeInteger"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-tab-attlist" combine="interleave">
+    <optional>
+        <attribute name="form:tab-index" a:defaultValue="0">
+            <ref name="nonNegativeInteger"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-tab-attlist" combine="interleave">
+    <optional>
+        <attribute name="form:tab-stop" a:defaultValue="true">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="target-frame">
+    <optional>
+        <attribute name="office:target-frame" a:defaultValue="_blank">
+            <ref name="targetFrameName"/>
+        </attribute>
+    </optional>
+</define>
+<define name="target-location">
+    <optional>
+        <attribute name="xlink:href">
+            <ref name="anyURI"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-title-attlist">
+    <optional>
+        <attribute name="form:title"/>
+    </optional>
+</define>
+<define name="common-form-visual-effect-attlist" combine="interleave">
+    <optional>
+        <attribute name="form:visual-effect">
+            <choice>
+                <value>flat</value>
+                <value>3d</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="common-form-relative-image-position-attlist"
+        combine="interleave">
+    <choice>
+        <optional>
+            <attribute name="form:image-position" a:defaultValue="center">
+                <value>center</value>
+            </attribute>
+        </optional>
+        <group>
+            <attribute name="form:image-position">
+                <choice>
+                    <value>start</value>
+                    <value>end</value>
+                    <value>top</value>
+                    <value>bottom</value>
+                </choice>
+            </attribute>
+            <optional>
+                <attribute name="form:image-align" a:defaultValue="center">
+                    <choice>
+                        <value>start</value>
+                        <value>center</value>
+                        <value>end</value>
+                    </choice>
+                </attribute>
+            </optional>
+        </group>
+    </choice>
+</define>
+<define name="bound-column">
+    <optional>
+        <attribute name="form:bound-column">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-convert-empty-attlist">
+    <optional>
+        <attribute name="form:convert-empty-to-null" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-data-field-attlist">
+    <optional>
+        <attribute name="form:data-field">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="list-source">
+    <optional>
+        <attribute name="form:list-source">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="list-source-type">
+    <optional>
+        <attribute name="form:list-source-type">
+            <choice>
+                <value>table</value>
+                <value>query</value>
+                <value>sql</value>
+                <value>sql-pass-through</value>
+                <value>value-list</value>
+                <value>table-fields</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="form-properties">
+    <element name="form:properties">
+        <oneOrMore>
+            <ref name="form-property"/>
+        </oneOrMore>
+    </element>
+</define>
+<define name="form-property" combine="choice">
+    <element name="form:property">
+        <ref name="form-property-name"/>
+        <ref name="form-property-value-and-type-attlist"/>
+    </element>
+</define>
+<define name="form-property-name" combine="interleave">
+    <attribute name="form:property-name">
+        <ref name="string"/>
+    </attribute>
+</define>
+<define name="form-property-value-and-type-attlist" combine="interleave">
+    <choice>
+        <ref name="common-value-and-type-attlist"/>
+        <attribute name="office:value-type">
+            <value>void</value>
+        </attribute>
+    </choice>
+</define>
+<define name="form-property" combine="choice">
+    <element name="form:list-property">
+        <ref name="form-property-name"/>
+        <ref name="form-property-type-and-value-list"/>
+    </element>
+</define>
+<define name="form-property-type-and-value-list">
+    <choice>
+        <group>
+            <attribute name="office:value-type">
+                <value>float</value>
+            </attribute>
+            <zeroOrMore>
+                <element name="form:list-value">
+                    <attribute name="office:value">
+                        <ref name="double"/>
+                    </attribute>
+                </element>
+            </zeroOrMore>
+        </group>
+        <group>
+            <attribute name="office:value-type">
+                <value>percentage</value>
+            </attribute>
+            <zeroOrMore>
+                <element name="form:list-value">
+                    <attribute name="office:value">
+                        <ref name="double"/>
+                    </attribute>
+                </element>
+            </zeroOrMore>
+        </group>
+        <group>
+            <attribute name="office:value-type">
+                <value>currency</value>
+            </attribute>
+            <zeroOrMore>
+                <element name="form:list-value">
+                    <attribute name="office:value">
+                        <ref name="double"/>
+                    </attribute>
+                    <optional>
+                        <attribute name="office:currency">
+                            <ref name="string"/>
+                        </attribute>
+                    </optional>
+                </element>
+            </zeroOrMore>
+        </group>
+        <group>
+            <attribute name="office:value-type">
+                <value>date</value>
+            </attribute>
+            <zeroOrMore>
+                <element name="form:list-value">
+                    <attribute name="office:date-value">
+                        <ref name="dateOrDateTime"/>
+                    </attribute>
+                </element>
+            </zeroOrMore>
+        </group>
+        <group>
+            <attribute name="office:value-type">
+                <value>time</value>
+            </attribute>
+            <zeroOrMore>
+                <element name="form:list-value">
+                    <attribute name="office:time-value">
+                        <ref name="duration"/>
+                    </attribute>
+                </element>
+            </zeroOrMore>
+        </group>
+        <group>
+            <attribute name="office:value-type">
+                <value>boolean</value>
+            </attribute>
+            <zeroOrMore>
+                <element name="form:list-value">
+                    <attribute name="office:boolean-value">
+                        <ref name="boolean"/>
+                    </attribute>
+                </element>
+            </zeroOrMore>
+        </group>
+        <group>
+            <attribute name="office:value-type">
+                <value>string</value>
+            </attribute>
+            <zeroOrMore>
+                <element name="form:list-value">
+                    <attribute name="office:string-value">
+                        <ref name="string"/>
+                    </attribute>
+                </element>
+            </zeroOrMore>
+        </group>
+        <attribute name="office:value-type">
+            <value>void</value>
+        </attribute>
+    </choice>
+</define>
+<define name="office-annotation">
+    <element name="office:annotation">
+        <ref name="office-annotation-attlist"/>
+        <ref name="draw-caption-attlist"/>
+        <ref name="common-draw-position-attlist"/>
+        <ref name="common-draw-size-attlist"/>
+        <ref name="common-draw-shape-with-text-and-styles-attlist"/>
+        <optional>
+            <ref name="dc-creator"/>
+        </optional>
+        <optional>
+            <ref name="dc-date"/>
+        </optional>
+        <optional>
+            <ref name="meta-date-string"/>
+        </optional>
+        <zeroOrMore>
+            <choice>
+                <ref name="text-p"/>
+                <ref name="text-list"/>
+            </choice>
+        </zeroOrMore>
+    </element>
+</define>
+<define name="office-annotation-attlist" combine="interleave">
+    <optional>
+        <attribute name="office:display">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="meta-date-string">
+    <element name="meta:date-string">
+        <ref name="string"/>
+    </element>
+</define>
+<define name="common-num-format-prefix-suffix-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:num-prefix">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="style:num-suffix">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-num-format-attlist" combine="interleave">
+    <choice>
+        <attribute name="style:num-format">
+            <choice>
+                <value>1</value>
+                <value>i</value>
+                <value>I</value>
+                <ref name="string"/>
+                <empty/>
+            </choice>
+        </attribute>
+        <group>
+            <attribute name="style:num-format">
+                <choice>
+                    <value>a</value>
+                    <value>A</value>
+                </choice>
+            </attribute>
+            <ref name="style-num-letter-sync-attlist"/>
+        </group>
+        <empty/>
+    </choice>
+</define>
+<define name="style-num-letter-sync-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:num-letter-sync">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="office-change-info">
+    <element name="office:change-info">
+        <ref name="dc-creator"/>
+        <ref name="dc-date"/>
+        <zeroOrMore>
+            <ref name="text-p"/>
+        </zeroOrMore>
+    </element>
+</define>
+<define name="office-event-listeners">
+    <element name="office:event-listeners">
+        <zeroOrMore>
+            <choice>
+                <ref name="script-event-listener"/>
+                <ref name="presentation-event-listener"/>
+            </choice>
+        </zeroOrMore>
+    </element>
+</define>
+<define name="script-event-listener" combine="interleave">
+    <element name="script:event-listener">
+        <ref name="script-event-listener-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="script-event-listener-attlist" combine="interleave">
+    <attribute name="script:event-name">
+        <ref name="string"/>
+    </attribute>
+</define>
+<define name="script-event-listener-attlist" combine="interleave">
+    <attribute name="script:language">
+        <ref name="string"/>
+    </attribute>
+</define>
+<define name="script-event-listener-attlist" combine="interleave">
+    <choice>
+        <attribute name="script:macro-name">
+            <ref name="string"/>
+        </attribute>
+        <group>
+            <attribute name="xlink:href">
+                <ref name="anyURI"/>
+            </attribute>
+            <optional>
+                <attribute name="xlink:type" a:defaultValue="simple">
+                    <value>simple</value>
+                </attribute>
+            </optional>
+            <optional>
+                <attribute name="xlink:actuate" a:defaultValue="onRequest">
+                    <value>onRequest</value>
+                </attribute>
+            </optional>
+        </group>
+    </choice>
+</define>
+<define name="math-math">
+    <element name="math:math">
+        <ref name="mathMarkup"/>
+    </element>
+</define>
+
+<!-- To avoid inclusion of the complete MathML schema, anything -->
+<!-- is allowed within a math:math top-level element            -->
+<define name="mathMarkup">
+    <zeroOrMore>
+        <choice>
+            <attribute>
+                <anyName/>
+            </attribute>
+            <text/>
+            <element>
+                <anyName/>
+                <ref name="mathMarkup"/>
+            </element>
+        </choice>
+    </zeroOrMore>
+</define>
+<define name="text-dde-connection-decl">
+    <element name="text:dde-connection-decl">
+        <ref name="text-dde-connection-decl-attlist"/>
+        <ref name="common-dde-connection-decl-attlist"/>
+    </element>
+</define>
+<define name="text-dde-connection-decl-attlist" combine="interleave">
+    <attribute name="office:name">
+        <ref name="string"/>
+    </attribute>
+</define>
+<define name="common-dde-connection-decl-attlist" combine="interleave">
+    <attribute name="office:dde-application">
+        <ref name="string"/>
+    </attribute>
+</define>
+<define name="common-dde-connection-decl-attlist" combine="interleave">
+    <attribute name="office:dde-topic">
+        <ref name="string"/>
+    </attribute>
+</define>
+<define name="common-dde-connection-decl-attlist" combine="interleave">
+    <attribute name="office:dde-item">
+        <ref name="string"/>
+    </attribute>
+</define>
+<define name="common-dde-connection-decl-attlist" combine="interleave">
+    <optional>
+        <attribute name="office:automatic-update" a:defaultValue="true">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-dde-link">
+    <element name="table:dde-link">
+        <ref name="office-dde-source"/>
+        <ref name="table-table"/>
+    </element>
+</define>
+<define name="office-dde-source">
+    <element name="office:dde-source">
+        <ref name="office-dde-source-attlist"/>
+        <ref name="common-dde-connection-decl-attlist"/>
+    </element>
+</define>
+<define name="office-dde-source-attlist" combine="interleave">
+    <optional>
+        <attribute name="office:name">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="office-dde-source-attlist" combine="interleave">
+    <optional>
+        <attribute name="office:conversion-mode" 
+                    a:defaultValue="into-default-style-data-style">
+            <choice>
+                <value>into-default-style-data-style</value>
+                <value>into-english-number</value>
+                <value>keep-text</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="animation-element" combine="choice">
+    <element name="anim:animate">
+        <ref name="common-anim-target-attlist"/>
+        <ref name="common-anim-named-target-attlist"/>
+        <ref name="common-anim-values-attlist"/>
+        <ref name="common-anim-spline-mode-attlist"/>
+        <ref name="common-spline-anim-value-attlist"/>
+        <ref name="common-timing-attlist"/>
+        <ref name="common-anim-add-accum-attlist"/>
+    </element>
+</define>
+<define name="animation-element" combine="choice">
+    <element name="anim:set">
+        <ref name="common-anim-target-attlist"/>
+        <ref name="common-anim-named-target-attlist"/>
+        <ref name="common-anim-set-values-attlist"/>
+        <ref name="common-timing-attlist"/>
+        <ref name="common-anim-add-accum-attlist"/>
+    </element>
+</define>
+<define name="animation-element" combine="choice">
+    <element name="anim:animateMotion">
+        <ref name="anim-animate-motion-attlist"/>
+        <ref name="common-anim-target-attlist"/>
+        <ref name="common-anim-named-target-attlist"/>
+        <ref name="common-anim-add-accum-attlist"/>
+        <ref name="common-anim-values-attlist"/>
+        <ref name="common-timing-attlist"/>
+        <ref name="common-spline-anim-value-attlist"/>
+    </element>
+</define>
+<define name="anim-animate-motion-attlist" combine="interleave">
+    <optional>
+        <attribute name="svg:path">
+            <ref name="pathData"/>
+        </attribute>
+    </optional>
+</define>
+<define name="anim-animate-motion-attlist" combine="interleave">
+    <optional>
+        <attribute name="svg:origin">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="anim-animate-motion-attlist" combine="interleave">
+    <optional>
+        <attribute name="smil:calcMode" a:defaultValue="paced">   
+            <choice>
+                <value>discrete</value>
+                <value>linear</value>
+                <value>paced</value>
+                <value>spline</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="animation-element" combine="choice">
+    <element name="anim:animateColor">
+        <ref name="common-anim-target-attlist"/>
+        <ref name="common-anim-named-target-attlist"/>
+        <ref name="common-anim-add-accum-attlist"/>
+        <ref name="common-anim-values-attlist"/>
+        <ref name="common-anim-spline-mode-attlist"/>
+        <ref name="common-spline-anim-value-attlist"/>
+        <ref name="anim-animate-color-attlist"/>
+        <ref name="common-timing-attlist"/>
+    </element>
+</define>
+<define name="anim-animate-color-attlist" combine="interleave">
+    <optional>
+        <attribute name="anim:color-interpolation" a:defaultValue="rgb">
+            <choice>
+                <value>rgb</value>
+                <value>hsl</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="anim-animate-color-attlist" combine="interleave">
+    <optional>
+        <attribute name="anim:color-interpolation-direction"     
+                                   a:defaultValue="clockwise">
+            <choice>
+                <value>clockwise</value>
+                <value>counter-clockwise</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="animation-element" combine="choice">
+    <element name="anim:animateTransform">
+        <ref name="common-anim-target-attlist"/>
+        <ref name="common-anim-named-target-attlist"/>
+        <ref name="common-anim-add-accum-attlist"/>
+        <ref name="common-anim-values-attlist"/>
+        <ref name="anim-animate-transform-attlist"/>
+        <ref name="common-timing-attlist"/>
+    </element>
+</define>
+<define name="anim-animate-transform-attlist" combine="interleave">
+    <attribute name="svg:type">
+        <choice>
+            <value>translate</value>
+            <value>scale</value>
+            <value>rotate</value>
+            <value>skewX</value>
+            <value>skewY</value> 
+        </choice>
+    </attribute>
+</define>
+<define name="animation-element" combine="choice">
+    <element name="anim:transitionFilter">
+        <ref name="common-anim-target-attlist"/>
+        <ref name="common-anim-add-accum-attlist"/>
+        <ref name="common-anim-values-attlist"/>
+        <ref name="common-anim-spline-mode-attlist "/>
+        <ref name="anim-transition-filter-attlist"/>
+        <ref name="common-timing-attlist"/>
+    </element>
+</define>
+<define name="anim-transition-filter-attlist" combine="interleave">
+    <attribute name="smil:type">
+        <ref name="string"/>
+    </attribute>
+</define>
+<define name="anim-transition-filter-attlist" combine="interleave">
+    <optional>
+        <attribute name="smil:subtype">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="anim-transition-filter-attlist" combine="interleave">
+    <optional>
+        <attribute name="smil:direction" a:defaultValue="forward">
+            <choice>
+                <value>forward</value>
+                <value>reverse</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="anim-transition-filter-attlist" combine="interleave">
+    <optional>
+        <attribute name="smil:fadeColor">
+            <choice>
+                <value>forward</value>
+                <value>reverse</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="anim-transition-filter-attlist" combine="interleave">
+    <optional>
+        <attribute name="smil:mode" a:defaultValue="in">
+            <choice>
+                <value>in</value>
+                <value>out</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="common-anim-attlist" combine="interleave">
+    <optional>
+        <attribute name="anim:id">
+            <ref name="ID"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-anim-target-attlist" combine="interleave">
+    <optional>
+        <attribute name="smil:targetElement">
+            <ref name="IDREF"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-anim-named-target-attlist" combine="interleave">
+    <attribute name="smil:attributeName">
+        <ref name="string"/>
+    </attribute>
+</define>
+<define name="common-anim-target-attlist" combine="interleave">
+    <optional>
+        <attribute name="anim:sub-item">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-anim-values-attlist" combine="interleave">
+    <optional>
+        <attribute name="smil:values">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-anim-spline-mode-attlist" combine="interleave">
+    <optional>
+        <attribute name="smil:calcMode" a:defaultValue="discrete">   
+            <choice>
+                <value>discrete</value>
+                <value>linear</value>
+                <value>paced</value>
+                <value>spline</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="common-spline-anim-value-attlist" combine="interleave">
+    <optional>
+        <attribute name="smil:keyTimes">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-spline-anim-value-attlist" combine="interleave">
+    <optional>
+        <attribute name="smil:keySplines">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-anim-add-accum-attlist" combine="interleave">
+    <optional>
+        <attribute name="smil:accumulate">
+            <choice>
+                <value>none</value>
+                <value>sum</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="common-anim-add-accum-attlist" combine="interleave">
+    <optional>
+        <attribute name="smil:additive">
+            <choice>
+                <value>replace</value>
+                <value>sum</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="common-anim-values-attlist" combine="interleave">
+    <optional>
+        <attribute name="anim:formula">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-anim-set-values-attlist" combine="interleave">
+    <optional>
+        <attribute name="smil:to">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+
+<define name="common-anim-values-attlist" combine="interleave">
+    <ref name="common-anim-set-values-attlist"/>
+    <optional>
+        <attribute name="smil:from">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="smil:by">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-begin-end-timing-attlist" combine="interleave">
+    <optional>
+        <attribute name="smil:begin">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-begin-end-timing-attlist" combine="interleave">
+    <optional>
+        <attribute name="smil:end">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-dur-timing-attlist" combine="interleave">
+    <optional>
+        <attribute name="smil:dur">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-endsync-timing-attlist" combine="interleave">
+    <optional>
+        <attribute name="smil:endsync">
+            <choice>
+                <value>first</value>
+                <value>last</value>
+                <value>all</value>
+                <value>media</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="common-repeat-timing-attlist" combine="interleave">
+    <optional>
+        <attribute name="smil:repeatDur">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="smil:repeatCount">
+            <choice>
+                <ref name="nonNegativeInteger"/>
+                <value>indefinite</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="common-fill-timing-attlist" combine="interleave">
+    <optional>
+        <attribute name="smil:fill">
+            <choice>
+                <value>remove</value>
+                <value>freeze</value>
+                <value>hold</value>
+                <value>auto</value>
+                <value>default</value>
+                <value>transition</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="common-fill-default-attlist" combine="interleave">
+    <optional>
+        <attribute name="smil:fillDefault">
+            <choice>
+                <value>remove</value>
+                <value>freeze</value>
+                <value>hold</value>
+                <value>transition</value>
+                <value>auto</value>
+                <value>inherit</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="common-restart-timing-attlist" combine="interleave">
+    <optional>
+        <attribute name="smil:restart" a:defaultValue="default">
+            <choice>
+                <value>never</value>
+                <value>always</value>
+                <value>whenNotActive</value>
+                <value>default</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="common-restart-default-attlist" combine="interleave">
+    <optional>
+        <attribute name="smil:restartDefault" a:defaultValue="inherit">
+            <choice>
+                <value>never</value>
+                <value>always</value>
+                <value>whenNotActive</value>
+                <value>inherit</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="common-time-manip-attlist" combine="interleave">
+    <optional>    
+        <attribute name="smil:accelerate" a:defaultValue="0.0">
+            <ref name="double"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-time-manip-attlist" combine="interleave">
+    <optional>
+        <attribute name="smil:decelerate" a:defaultValue="0.0">
+            <ref name="double"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-time-manip-attlist" combine="interleave">
+    <optional>
+        <attribute name="smil:autoReverse" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="animation-element" combine="choice">
+    <element name="anim:par">
+        <ref name="common-anim-attlist"/>
+        <ref name="common-timing-attlist"/>
+        <ref name="common-endsync-timing-attlist"/>
+        <zeroOrMore>
+            <ref name="animation-element"/>
+        </zeroOrMore>
+    </element>
+</define>
+
+<define name="common-basic-timing-attlist" combine="interleave">
+   <ref name="common-begin-end-timing-attlist"/>
+   <ref name="common-dur-timing-attlist"/>
+   <ref name="common-repeat-timing-attlist"/>
+</define>
+
+<define name="common-timing-attlist" combine="interleave">
+   <ref name="common-basic-timing-attlist"/>
+   <ref name="common-restart-timing-attlist"/>
+   <ref name="common-restart-default-attlist"/>
+   <ref name="common-fill-timing-attlist"/>
+   <ref name="common-fill-default-attlist"/>
+   <ref name="common-time-manip-attlist"/>
+</define>
+<define name="animation-element" combine="choice">
+    <element name="anim:seq">
+        <ref name="common-anim-attlist"/>
+        <ref name="common-endsync-timing-attlist"/>
+        <ref name="common-timing-attlist"/>
+        <zeroOrMore>
+            <ref name="animation-element"/>
+        </zeroOrMore>
+    </element>
+</define>
+<define name="animation-element" combine="choice">
+    <element name="anim:iterate">
+        <ref name="common-anim-attlist"/>
+        <ref name="anim-iterate-attlist"/>
+        <ref name="common-timing-attlist"/>
+        <ref name="common-endsync-timing-attlist"/>
+        <zeroOrMore>
+            <ref name="animation-element"/>
+        </zeroOrMore>
+    </element>
+</define>
+<define name="anim-iterate-attlist" combine="interleave">
+    <ref name="common-anim-target-attlist"/>
+</define>
+<define name="anim-iterate-attlist" combine="interleave">
+    <optional>
+        <attribute name="anim:iterate-type">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="anim-iterate-attlist" combine="interleave">
+    <optional>
+        <attribute name="anim:iterate-interval">
+            <ref name="duration"/>
+        </attribute>
+    </optional>
+</define>
+<define name="animation-element" combine="choice">
+    <element name="anim:audio">
+        <ref name="common-anim-attlist"/>
+        <ref name="anim-audio-attlist"/>
+        <ref name="common-basic-timing-attlist"/>
+    </element>
+</define>
+<define name="anim-audio-attlist" combine="interleave">
+    <optional>
+        <attribute name="xlink:href">
+            <ref name="anyURI"/>
+        </attribute>
+    </optional>
+</define>
+<define name="anim-audio-attlist" combine="interleave">
+    <optional>
+        <attribute name="anim:audio-level">
+            <ref name="double"/>
+        </attribute>
+    </optional>
+</define>
+<define name="animation-element" combine="choice">
+    <element name="anim:command">
+        <ref name="common-anim-attlist"/>
+        <ref name="anim-command-attlist"/>
+        <ref name="common-begin-end-timing-attlist"/>
+        <ref name="common-anim-target-attlist"/>
+        <zeroOrMore>
+            <element name="anim:param">
+                <attribute name="anim:name"/>
+                <attribute name="anim:value"/>
+            </element>
+        </zeroOrMore>
+    </element>
+</define>
+<define name="anim-command-attlist" combine="interleave">
+    <attribute name="anim:command">
+        <ref name="string"/>
+    </attribute>
+</define>
+<define name="style-style">
+    <element name="style:style">
+        <ref name="style-style-attlist"/>
+        <ref name="style-style-content"/>
+        <zeroOrMore>
+            <ref name="style-map"/>
+        </zeroOrMore>
+    </element>
+</define>
+<define name="style-style-attlist" combine="interleave">
+    <attribute name="style:name">
+        <ref name="styleName"/>
+    </attribute>
+</define>
+<define name="style-style-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:display-name">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-style-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:parent-style-name">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-style-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:next-style-name">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-style-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:list-style-name">
+            <choice>
+                <ref name="styleName"/>
+                <empty/>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-style-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:master-page-name">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-style-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:auto-update" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-style-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:data-style-name">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-style-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:class">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-style-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:default-outline-level">
+            <ref name="positiveInteger"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-map">
+    <element name="style:map">
+        <ref name="style-map-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="style-map-attlist" combine="interleave">
+    <attribute name="style:condition">
+        <ref name="string"/>
+    </attribute>
+</define>
+<define name="style-map-attlist" combine="interleave">
+    <attribute name="style:apply-style-name">
+        <ref name="styleNameRef"/>
+    </attribute>
+</define>
+<define name="style-map-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:base-cell-address">
+            <ref name="cellAddress"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-default-style">
+    <element name="style:default-style">
+        <ref name="style-style-content"/>
+    </element>
+</define>
+<define name="style-page-layout">
+    <element name="style:page-layout">
+        <ref name="style-page-layout-attlist"/>
+        <optional>
+            <ref name="style-page-layout-properties"/>
+        </optional>
+        <optional>
+            <ref name="style-header-style"/>
+        </optional>
+        <optional>
+            <ref name="style-footer-style"/>
+        </optional>
+    </element>
+</define>
+<define name="style-page-layout-attlist" combine="interleave">
+    <attribute name="style:name">
+        <ref name="styleName"/>
+    </attribute>
+</define>
+<define name="style-page-layout-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:page-usage" a:defaultValue="all">
+            <choice>
+                <value>all</value>
+                <value>left</value>
+                <value>right</value>
+                <value>mirrored</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-header-style">
+    <element name="style:header-style">
+        <optional>
+            <ref name="style-header-footer-properties"/>
+        </optional>
+    </element>
+</define>
+<define name="style-footer-style">
+    <element name="style:footer-style">
+        <optional>
+            <ref name="style-header-footer-properties"/>
+        </optional>
+    </element>
+</define>
+<define name="style-master-page">
+    <element name="style:master-page">
+        <ref name="style-master-page-attlist"/>
+        <optional>
+            <ref name="style-header"/>
+            <optional>
+                <ref name="style-header-left"/>
+            </optional>
+        </optional>
+        <optional>
+            <ref name="style-footer"/>
+            <optional>
+                <ref name="style-footer-left"/>
+            </optional>
+        </optional>
+        <optional>
+            <ref name="office-forms"/>
+        </optional>
+        <zeroOrMore>
+            <ref name="style-style"/>
+        </zeroOrMore>
+        <zeroOrMore>
+            <ref name="shape"/>
+        </zeroOrMore>
+        <optional>
+            <ref name="presentation-notes"/>
+        </optional>
+    </element>
+</define>
+<define name="style-master-page-attlist" combine="interleave">
+    <attribute name="style:name">
+        <ref name="styleName"/>
+    </attribute>
+</define>
+<define name="style-master-page-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:display-name">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-master-page-attlist" combine="interleave">
+    <attribute name="style:page-layout-name">
+        <ref name="styleNameRef"/>
+    </attribute>
+</define>
+<define name="style-master-page-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:style-name">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-master-page-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:next-style-name">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-header">
+    <element name="style:header">
+        <ref name="common-style-header-footer-attlist"/>
+        <ref name="header-footer-content"/>
+    </element>
+</define>
+<define name="style-footer">
+    <element name="style:footer">
+        <ref name="common-style-header-footer-attlist"/>
+        <ref name="header-footer-content"/>
+    </element>
+</define>
+<define name="style-header-left">
+    <element name="style:header-left">
+        <ref name="common-style-header-footer-attlist"/>
+        <ref name="header-footer-content"/>
+    </element>
+</define>
+<define name="style-footer-left">
+    <element name="style:footer-left">
+        <ref name="common-style-header-footer-attlist"/>
+        <ref name="header-footer-content"/>
+    </element>
+</define>
+<define name="header-footer-content">
+    <choice>
+        <group>
+            <ref name="text-tracked-changes"/>
+            <ref name="text-decls"/>
+            <zeroOrMore>
+                <choice>
+                    <ref name="text-h"/>
+                    <ref name="text-p"/>
+                    <ref name="text-list"/>
+                    <ref name="table-table"/>
+                    <ref name="text-section"/>
+                    <ref name="text-table-of-content"/>
+                    <ref name="text-illustration-index"/>
+                    <ref name="text-table-index"/>
+                    <ref name="text-object-index"/>
+                    <ref name="text-user-index"/>
+                    <ref name="text-alphabetical-index"/>
+                    <ref name="text-bibliography"/>
+                    <ref name="text-index-title"/>
+                    <ref name="change-marks"/>
+                </choice>
+            </zeroOrMore>
+        </group>
+        <group>
+            <optional>
+                <ref name="style-region-left"/>
+            </optional>
+            <optional>
+                <ref name="style-region-center"/>
+            </optional>
+            <optional>
+                <ref name="style-region-right"/>
+            </optional>
+        </group>
+    </choice>
+</define>
+<define name="common-style-header-footer-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:display" a:defaultValue="true">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-region-left">
+    <element name="style:region-left">
+        <ref name="region-content"/>
+    </element>
+</define>
+<define name="style-region-center">
+    <element name="style:region-center">
+        <ref name="region-content"/>
+    </element>
+</define>
+<define name="style-region-right">
+    <element name="style:region-right">
+        <ref name="region-content"/>
+    </element>
+</define>
+
+<define name="region-content">
+    <zeroOrMore>
+        <ref name="text-p"/>
+    </zeroOrMore>
+</define>
+<define name="presentation-notes">
+    <element name="presentation:notes">
+        <ref name="common-presentation-header-footer-attlist"/>
+        <ref name="presentation-notes-attlist"/>
+        <ref name="office-forms"/>
+        <zeroOrMore>
+            <ref name="shape"/>
+        </zeroOrMore>
+    </element>
+</define>
+<define name="presentation-notes-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:page-layout-name">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+<define name="presentation-notes-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:style-name">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+<define name="table-table-template">
+    <element name="table:table-template">
+        <ref name="table-table-template-attlist"/>
+        <optional>
+            <ref name="table-first-row"/>
+        </optional>
+        <optional>
+            <ref name="table-last-row"/>
+        </optional>
+        <optional>
+            <ref name="table-first-column"/>
+        </optional>
+        <optional>
+            <ref name="table-last-column"/>
+        </optional>
+        <choice>
+            <ref name="table-body"/>
+            <group>
+                <ref name="table-even-rows"/>
+                <ref name="table-odd-rows"/>
+            </group>
+            <group>
+                <ref name="table-even-columns"/>
+                <ref name="table-odd-columns"/>
+            </group>
+        </choice>
+    </element>
+</define>
+<define name="table-table-template-attlist" combine="interleave">
+    <attribute name="text:name">
+        <ref name="string"/>
+    </attribute>
+</define>
+<define name="table-table-template-attlist" combine="interleave">
+    <attribute name="text:first-row-start-column">
+        <ref name="rowOrCol"/>
+    </attribute>
+</define>
+
+<define name="table-table-template-attlist" combine="interleave">
+    <attribute name="text:first-row-end-column">
+        <ref name="rowOrCol"/>
+    </attribute>
+</define>
+
+<define name="table-table-template-attlist" combine="interleave">
+    <attribute name="text:last-row-start-column">
+        <ref name="rowOrCol"/>
+    </attribute>
+</define>
+
+<define name="table-table-template-attlist" combine="interleave">
+    <attribute name="text:last-row-end-column">
+        <ref name="rowOrCol"/>
+    </attribute>
+</define>
+
+<define name="rowOrCol">
+    <choice>
+        <value>row</value>
+        <value>column</value>
+    </choice>
+</define>
+<define name="table-first-row">
+    <element name="table:first-row">
+        <ref name="common-table-template-attlist"/>
+        <empty/>
+    </element>
+</define>
+
+<define name="table-last-row">
+    <element name="table:last-row">
+        <ref name="common-table-template-attlist"/>
+        <empty/>
+    </element>
+</define>
+
+<define name="table-first-column">
+    <element name="table:first-column">
+        <ref name="common-table-template-attlist"/>
+        <empty/>
+    </element>
+</define>
+
+<define name="table-last-column">
+    <element name="table:last-column">
+        <ref name="common-table-template-attlist"/>
+        <empty/>
+    </element>
+</define>
+
+<define name="table-body">
+    <element name="table:body">
+        <ref name="common-table-template-attlist"/>
+        <empty/>
+    </element>
+</define>
+
+<define name="table-even-rows">
+    <element name="table:even-rows">
+        <ref name="common-table-template-attlist"/>
+        <empty/>
+    </element>
+</define>
+
+<define name="table-odd-rows">
+    <element name="table:odd-rows">
+        <ref name="common-table-template-attlist"/>
+        <empty/>
+    </element>
+</define>
+
+<define name="table-even-columns">
+    <element name="table:even-columns">
+        <ref name="common-table-template-attlist"/>
+        <empty/>
+    </element>
+</define>
+
+<define name="table-odd-columns">
+    <element name="table:odd-columns">
+        <ref name="common-table-template-attlist"/>
+        <empty/>
+    </element>
+</define>
+
+<define name="common-table-template-attlist" combine="interleave">
+    <attribute name="text:style-name">
+        <ref name="styleNameRef"/>
+    </attribute>
+    <attribute name="text:paragraph-style-name">
+        <optional>
+            <ref name="styleNameRef"/>
+        </optional>
+    </attribute>
+</define>
+<define name="style-font-face">
+    <element name="style:font-face">
+        <ref name="style-font-face-attlist"/>
+        <optional>
+            <ref name="svg-font-face-src"/>
+        </optional>
+        <optional>
+            <ref name="svg-definition-src"/>
+        </optional>
+    </element>
+</define>
+<define name="style-font-face-attlist" combine="interleave">
+    <optional>
+        <attribute name="svg:font-family">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="svg:font-style">
+            <ref name="fontStyle"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="svg:font-variant">
+            <ref name="fontVariant"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="svg:font-weight">
+            <ref name="fontWeight"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="svg:font-stretch">
+            <choice>
+                <value>normal</value>
+                <value>ultra-condensed</value>
+                <value>extra-condensed</value>
+                <value>condensed</value>
+                <value>semi-condensed</value>
+                <value>semi-expanded</value>
+                <value>expanded</value>
+                <value>extra-expanded</value>
+                <value>ultra-expanded</value>
+            </choice>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="svg:font-size">
+            <ref name="positiveLength"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="svg:unicode-range"/>
+    </optional>
+    <optional>
+        <attribute name="svg:units-per-em">
+            <ref name="integer"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="svg:panose-1"/>
+    </optional>
+    <optional>
+        <attribute name="svg:stemv">
+            <ref name="integer"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="svg:stemh">
+            <ref name="integer"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="svg:slope">
+            <ref name="integer"/>
+        </attribute>
+        </optional>
+    <optional>
+        <attribute name="svg:cap-height">
+            <ref name="integer"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="svg:x-height">
+            <ref name="integer"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="svg:accent-height">
+            <ref name="integer"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="svg:ascent">
+            <ref name="integer"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="svg:descent">
+            <ref name="integer"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="svg:widths"/>
+    </optional>
+    <optional>
+        <attribute name="svg:bbox"/>
+    </optional>
+    <optional>
+        <attribute name="svg:ideographic">
+            <ref name="integer"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="svg:alphabetic">
+            <ref name="integer"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="svg:mathematical">
+            <ref name="integer"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="svg:hanging">
+            <ref name="integer"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="svg:v-ideographic">
+            <ref name="integer"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="svg:v-alphabetic">
+            <ref name="integer"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="svg:v-mathematical">
+            <ref name="integer"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="svg:v-hanging">
+            <ref name="integer"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="svg:underline-position">
+            <ref name="integer"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="svg:underline-thickness">
+            <ref name="integer"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="svg:strikethrough-position">
+            <ref name="integer"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="svg:strikethrough-thickness">
+            <ref name="integer"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="svg:overline-position">
+            <ref name="integer"/>
+        </attribute>
+        </optional>
+    <optional>
+        <attribute name="svg:overline-thickness">
+            <ref name="integer"/>
+        </attribute>
+    </optional>
+</define>
+
+<define name="svg-font-face-src">
+    <element name="svg:font-face-src">
+        <oneOrMore>
+            <choice>
+                <ref name="svg-font-face-uri"/>
+                <ref name="svg-font-face-name"/>
+            </choice>
+        </oneOrMore>
+    </element>
+</define>
+
+<define name="svg-font-face-uri">
+    <element name="svg:font-face-uri">
+        <ref name="common-svg-font-face-xlink-attlist"/>
+        <zeroOrMore>
+            <ref name="svg-font-face-format"/>
+        </zeroOrMore>
+    </element>
+</define>
+
+<define name="svg-font-face-format">
+    <element name="svg:font-face-format">
+        <optional>
+            <attribute name="svg:string"/>
+        </optional>
+        <empty/>
+    </element>
+</define>
+<define name="svg-font-face-name">
+    <element name="svg:font-face-name">
+        <optional>
+            <attribute name="svg:name"/>
+        </optional>
+        <empty/>
+    </element>
+</define>
+
+<define name="svg-definition-src">
+    <element name="svg:definition-src">
+        <ref name="common-svg-font-face-xlink-attlist"/>
+    <empty/>
+    </element>
+</define>
+
+<define name="common-svg-font-face-xlink-attlist" combine="interleave">
+    <attribute name="xlink:href">
+        <ref name="anyURI"/>
+    </attribute>
+    <optional>
+        <attribute name="xlink:type" a:defaultValue="simple">
+            <value>simple</value>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="xlink:actuate" a:defaultValue="onRequest">
+            <value>onRequest</value>
+        </attribute>
+    </optional>
+</define>
+<define name="style-font-face-attlist" combine="interleave">
+    <attribute name="style:name">
+        <ref name="string"/>
+    </attribute>
+</define>
+<define name="style-font-face-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:font-adornments">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-font-face-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:font-family-generic">
+            <ref name="fontFamilyGeneric"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-font-face-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:font-pitch">
+            <ref name="fontPitch"/>
+        </attribute>
+    </optional>
+</define>
+
+<define name="style-font-face-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:font-charset">
+            <ref name="textEncoding"/>
+        </attribute>
+    </optional>
+</define>
+<define name="number-number-style">
+    <element name="number:number-style">
+        <ref name="common-data-style-attlist"/>
+        <optional>
+            <ref name="style-text-properties"/>
+        </optional>
+        <optional>
+            <ref name="number-text"/>
+        </optional>
+        <optional>
+            <ref name="any-number"/>
+            <optional>
+                <ref name="number-text"/>
+            </optional>
+        </optional>
+        <zeroOrMore>
+            <ref name="style-map"/>
+        </zeroOrMore>
+    </element>
+</define>
+
+<define name="any-number">
+    <choice>
+        <ref name="number-number"/>
+        <ref name="number-scientific-number"/>
+        <ref name="number-fraction"/>
+    </choice>
+</define>
+<define name="number-number">
+    <element name="number:number">
+        <ref name="number-number-attlist"/>
+        <ref name="common-decimal-places-attlist"/>
+        <ref name="common-number-attlist"/>
+        <zeroOrMore>
+            <ref name="number-embedded-text"/>
+        </zeroOrMore>
+    </element>
+</define>
+<define name="number-number-attlist" combine="interleave">
+    <optional>
+        <attribute name="number:decimal-replacement"/>
+    </optional>
+</define>
+<define name="number-number-attlist" combine="interleave">
+    <optional>
+        <attribute name="number:display-factor" a:defaultValue="1">
+            <ref name="double"/>
+        </attribute>
+    </optional>
+</define>
+<define name="number-embedded-text">
+    <element name="number:embedded-text">
+        <ref name="number-embedded-text-attlist"/>
+        <text/>
+    </element>
+</define>
+<define name="number-embedded-text-attlist" combine="interleave">
+    <attribute name="number:position">
+        <ref name="integer"/>
+    </attribute>
+</define>
+<define name="number-scientific-number">
+    <element name="number:scientific-number">
+        <ref name="number-scientific-number-attlist"/>
+        <ref name="common-decimal-places-attlist"/>
+        <ref name="common-number-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="number-scientific-number-attlist" combine="interleave">
+    <optional>
+        <attribute name="number:min-exponent-digits">
+            <ref name="integer"/>
+        </attribute>
+    </optional>
+</define>
+<define name="number-fraction">
+    <element name="number:fraction">
+        <ref name="number-fraction-attlist"/>
+        <ref name="common-number-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="number-fraction-attlist" combine="interleave">
+    <optional>
+        <attribute name="number:min-numerator-digits">
+            <ref name="integer"/>
+        </attribute>
+    </optional>
+</define>
+<define name="number-fraction-attlist" combine="interleave">
+    <optional>
+        <attribute name="number:min-denominator-digits">
+            <ref name="integer"/>
+        </attribute>
+    </optional>
+</define>
+<define name="number-fraction-attlist" combine="interleave">
+    <optional>
+        <attribute name="number:denominator-value">
+            <ref name="integer"/>
+        </attribute>
+    </optional>
+</define>
+<define name="number-currency-style">
+    <element name="number:currency-style">
+        <ref name="common-data-style-attlist"/>
+        <ref name="common-auto-reorder-attlist"/>
+        <optional>
+            <ref name="style-text-properties"/>
+        </optional>
+        <optional>
+            <ref name="number-text"/>
+        </optional>
+        <optional>
+            <choice>
+                <group>
+                    <ref name="number-and-text"/>
+                    <optional>
+                        <ref name="currency-symbol-and-text"/>
+                    </optional>
+                </group>
+                <group>
+                    <ref name="currency-symbol-and-text"/>
+                    <optional>
+                        <ref name="number-and-text"/>
+                    </optional>
+                </group>
+            </choice>
+        </optional>
+        <zeroOrMore>
+            <ref name="style-map"/>
+        </zeroOrMore>
+    </element>
+</define>
+
+<define name="currency-symbol-and-text">
+    <ref name="number-currency-symbol"/>
+    <optional>
+        <ref name="number-text"/>
+    </optional>
+</define>
+<define name="number-and-text">
+    <ref name="number-number"/>
+    <optional>
+        <ref name="number-text"/>
+    </optional>
+</define>
+<define name="number-currency-symbol">
+    <element name="number:currency-symbol">
+        <ref name="number-currency-symbol-attlist"/>
+        <text/>
+    </element>
+</define>
+<define name="number-currency-symbol-attlist" combine="interleave">
+    <optional>
+        <attribute name="number:language">
+            <ref name="languageCode"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="number:country">
+            <ref name="countryCode"/>
+        </attribute>
+    </optional>
+</define>
+<define name="number-percentage-style">
+    <element name="number:percentage-style">
+        <ref name="common-data-style-attlist"/>
+        <optional>
+            <ref name="style-text-properties"/>
+        </optional>
+        <optional>
+            <ref name="number-text"/>
+        </optional>
+        <optional>
+            <ref name="number-and-text"/>
+        </optional>
+        <zeroOrMore>
+            <ref name="style-map"/>
+        </zeroOrMore>
+    </element>
+</define>
+<define name="number-date-style">
+    <element name="number:date-style">
+        <ref name="common-data-style-attlist"/>
+        <ref name="common-auto-reorder-attlist"/>
+        <ref name="common-format-source-attlist"/>
+        <optional>
+            <ref name="style-text-properties"/>
+        </optional>
+        <!-- This DTD does not reflect the fact that some elements must not -->
+        <!-- occur more than once. -->
+        <optional>
+            <ref name="number-text"/>
+        </optional>
+        <oneOrMore>
+            <ref name="any-date"/>
+            <optional>
+                <ref name="number-text"/>
+            </optional>
+        </oneOrMore>
+        <zeroOrMore>
+            <ref name="style-map"/>
+        </zeroOrMore>
+    </element>
+</define>
+
+<define name="any-date">
+    <choice>
+        <ref name="number-day"/>
+        <ref name="number-month"/>
+        <ref name="number-year"/>
+        <ref name="number-era"/>
+        <ref name="number-day-of-week"/>
+        <ref name="number-week-of-year"/>
+        <ref name="number-quarter"/>
+        <ref name="number-hours"/>
+        <ref name="number-am-pm"/>
+        <ref name="number-minutes"/>
+        <ref name="number-seconds"/>
+    </choice>
+</define>
+<define name="number-day">
+    <element name="number:day">
+        <ref name="number-day-attlist"/>
+        <ref name="common-calendar-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="number-day-attlist" combine="interleave">
+    <optional>
+        <attribute name="number:style" a:defaultValue="short">
+            <choice>
+                <value>short</value>
+                <value>long</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="number-month">
+    <element name="number:month">
+        <ref name="number-month-attlist"/>
+        <ref name="common-calendar-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="number-month-attlist" combine="interleave">
+    <optional>
+        <attribute name="number:textual" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="number-month-attlist" combine="interleave">
+    <optional>
+        <attribute name="number:possessive-form" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="number-month-attlist" combine="interleave">
+    <optional>
+        <attribute name="number:style" a:defaultValue="short">
+            <choice>
+                <value>short</value>
+                <value>long</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="number-year">
+    <element name="number:year">
+        <ref name="number-year-attlist"/>
+        <ref name="common-calendar-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="number-year-attlist" combine="interleave">
+    <optional>
+        <attribute name="number:style" a:defaultValue="short">
+            <choice>
+                <value>short</value>
+                <value>long</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="number-era">
+    <element name="number:era">
+        <ref name="number-era-attlist"/>
+        <ref name="common-calendar-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="number-era-attlist" combine="interleave">
+    <optional>
+        <attribute name="number:style" a:defaultValue="short">
+            <choice>
+                <value>short</value>
+                <value>long</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="number-day-of-week">
+    <element name="number:day-of-week">
+        <ref name="number-day-of-week-attlist"/>
+        <ref name="common-calendar-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="number-day-of-week-attlist" combine="interleave">
+    <optional>
+        <attribute name="number:style" a:defaultValue="short">
+            <choice>
+                <value>short</value>
+                <value>long</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="number-week-of-year">
+    <element name="number:week-of-year">
+        <ref name="common-calendar-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="number-quarter">
+    <element name="number:quarter">
+        <ref name="number-quarter-attlist"/>
+        <ref name="common-calendar-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="number-quarter-attlist" combine="interleave">
+    <optional>
+        <attribute name="number:style" a:defaultValue="short">
+            <choice>
+                <value>short</value>
+                <value>long</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="number-time-style">
+    <element name="number:time-style">
+        <ref name="number-time-style-attlist"/>
+        <ref name="common-data-style-attlist"/>
+        <ref name="common-format-source-attlist"/>
+        <optional>
+            <ref name="style-text-properties"/>
+        </optional>
+        <!-- This DTD does not reflect the fact that some elements must not -->
+        <!-- occur more than once. -->
+        <optional>
+            <ref name="number-text"/>
+        </optional>
+        <oneOrMore>
+            <ref name="any-time"/>
+            <optional>
+                <ref name="number-text"/>
+            </optional>
+        </oneOrMore>
+        <zeroOrMore>
+            <ref name="style-map"/>
+        </zeroOrMore>
+    </element>
+</define>
+
+<define name="any-time">
+    <choice>
+        <ref name="number-hours"/>
+        <ref name="number-am-pm"/>
+        <ref name="number-minutes"/>
+        <ref name="number-seconds"/>
+    </choice>
+</define>
+<define name="number-time-style-attlist" combine="interleave">
+    <optional>
+        <attribute name="number:truncate-on-overflow" a:defaultValue="true">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="number-hours">
+    <element name="number:hours">
+        <ref name="number-hours-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="number-hours-attlist" combine="interleave">
+    <optional>
+        <attribute name="number:style" a:defaultValue="short">
+            <choice>
+                <value>short</value>
+                <value>long</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="number-minutes">
+    <element name="number:minutes">
+        <ref name="number-minutes-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="number-minutes-attlist" combine="interleave">
+    <optional>
+        <attribute name="number:style" a:defaultValue="short">
+            <choice>
+                <value>short</value>
+                <value>long</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="number-seconds">
+    <element name="number:seconds">
+        <ref name="number-seconds-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="number-seconds-attlist" combine="interleave">
+    <optional>
+        <attribute name="number:style" a:defaultValue="short">
+            <choice>
+                <value>short</value>
+                <value>long</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="number-seconds-attlist" combine="interleave">
+    <optional>
+        <attribute name="number:decimal-places" a:defaultValue="0">
+            <ref name="integer"/>
+        </attribute>
+    </optional>
+</define>
+<define name="number-am-pm">
+    <element name="number:am-pm">
+        <empty/>
+    </element>
+</define>
+<define name="number-boolean-style">
+    <element name="number:boolean-style">
+        <ref name="common-data-style-attlist"/>
+        <optional>
+            <ref name="style-text-properties"/>
+        </optional>
+        <optional>
+            <ref name="number-text"/>
+        </optional>
+        <optional>
+            <ref name="number-boolean"/>
+            <optional>
+                <ref name="number-text"/>
+            </optional>
+        </optional>
+        <zeroOrMore>
+            <ref name="style-map"/>
+        </zeroOrMore>
+    </element>
+</define>
+<define name="number-boolean">
+    <element name="number:boolean">
+        <empty/>
+    </element>
+</define>
+<define name="number-text-style">
+    <element name="number:text-style">
+        <ref name="common-data-style-attlist"/>
+        <optional>
+            <ref name="style-text-properties"/>
+        </optional>
+        <optional>
+            <ref name="number-text"/>
+        </optional>
+        <zeroOrMore>
+            <ref name="number-text-content"/>
+            <optional>
+                <ref name="number-text"/>
+            </optional>
+        </zeroOrMore>
+        <zeroOrMore>
+            <ref name="style-map"/>
+        </zeroOrMore>
+    </element>
+</define>
+<define name="number-text">
+    <element name="number:text">
+        <text/>
+    </element>
+</define>
+<define name="number-text-content">
+    <element name="number:text-content">
+        <empty/>
+    </element>
+</define>
+<define name="common-data-style-attlist" combine="interleave">
+    <attribute name="style:name">
+        <ref name="styleName"/>
+    </attribute>
+</define>
+<define name="style-data-style-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:display-name">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-data-style-attlist" combine="interleave">
+    <optional>
+        <attribute name="number:language">
+            <ref name="languageCode"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-data-style-attlist" combine="interleave">
+    <optional>
+        <attribute name="number:country">
+            <ref name="countryCode"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-data-style-attlist" combine="interleave">
+    <optional>
+        <attribute name="number:title"/>
+    </optional>
+</define>
+<define name="common-data-style-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:volatile">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-auto-reorder-attlist" combine="interleave">
+    <optional>
+        <attribute name="number:automatic-order" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-format-source-attlist">
+    <optional>
+        <attribute name="number:format-source" a:defaultValue="fixed">
+            <choice>
+                <value>fixed</value>
+                <value>language</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="common-data-style-attlist" combine="interleave">
+    <optional>
+        <attribute name="number:transliteration-format" a:defaultValue="1">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-data-style-attlist" combine="interleave">
+    <optional>
+        <attribute name="number:transliteration-language">
+            <ref name="countryCode"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-data-style-attlist" combine="interleave">
+    <optional>
+        <attribute name="number:transliteration-country">
+            <ref name="countryCode"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-data-style-attlist" combine="interleave">
+    <optional>
+        <attribute name="number:transliteration-style" a:defaultValue="short">
+            <choice>
+                <value>short</value>
+                <value>medium</value>
+                <value>long</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="common-decimal-places-attlist">
+    <optional>
+        <attribute name="number:decimal-places">
+            <ref name="integer"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-number-attlist" combine="interleave">
+    <optional>
+        <attribute name="number:min-integer-digits">
+            <ref name="integer"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-number-attlist" combine="interleave">
+    <optional>
+        <attribute name="number:grouping" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-calendar-attlist" combine="interleave">
+    <optional>
+        <attribute name="number:calendar">
+            <choice>
+                <value>gregorian</value>
+                <value>gengou</value>
+                <value>ROC</value>
+                <value>hanja_yoil</value>
+                <value>hanja</value>
+                <value>hijri</value>
+                <value>jewish</value>
+                <value>buddhist</value>
+                <ref name="string"/>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-style-content" combine="choice">
+    <group>
+        <attribute name="style:family">
+            <value>text</value>
+        </attribute>
+        <optional>
+            <ref name="style-text-properties"/>
+        </optional>
+    </group>
+</define>
+<define name="style-style-content" combine="choice">
+    <group>
+        <attribute name="style:family">
+            <value>paragraph</value>
+        </attribute>
+        <optional>
+            <ref name="style-paragraph-properties"/>
+        </optional>
+        <optional>
+            <ref name="style-text-properties"/>
+        </optional>
+    </group>
+</define>
+<define name="style-style-content" combine="choice">
+    <group>
+        <attribute name="style:family">
+            <value>section</value>
+        </attribute>
+        <optional>
+            <ref name="style-section-properties"/>
+        </optional>
+    </group>
+</define>
+<define name="style-style-content" combine="choice">
+    <group>
+        <attribute name="style:family">
+            <value>ruby</value>
+        </attribute>
+        <optional>
+            <ref name="style-ruby-properties"/>
+        </optional>
+    </group>
+</define>
+<define name="text-linenumbering-configuration">
+    <element name="text:linenumbering-configuration">
+        <ref name="text-linenumbering-configuration-attlist"/>
+        <optional>
+            <ref name="text-linenumbering-separator"/>
+        </optional>
+    </element>
+</define>
+<define name="text-linenumbering-configuration-attlist" combine="interleave">
+    <optional>
+        <attribute name="text:number-lines" a:defaultValue="true">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-linenumbering-configuration-attlist" combine="interleave">
+    <optional>
+        <ref name="common-num-format-attlist"/>
+    </optional>
+</define>
+<define name="text-linenumbering-configuration-attlist" combine="interleave">
+    <optional>
+        <attribute name="text:style-name">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-linenumbering-configuration-attlist" combine="interleave">
+    <optional>
+        <attribute name="text:increment">
+            <ref name="nonNegativeInteger"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-linenumbering-configuration-attlist" combine="interleave">
+    <optional>
+        <attribute name="text:number-position" a:defaultValue="left">
+            <choice>
+                <value>left</value>
+                <value>right</value>
+                <value>inner</value>
+                <value>outer</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="text-linenumbering-configuration-attlist" combine="interleave">
+    <optional>
+        <attribute name="text:offset">
+            <ref name="nonNegativeLength"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-linenumbering-configuration-attlist" combine="interleave">
+    <optional>
+        <attribute name="text:count-empty-lines" a:defaultValue="true">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-linenumbering-configuration-attlist" combine="interleave">
+    <optional>
+        <attribute name="text:count-in-text-boxes" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-linenumbering-configuration-attlist" combine="interleave">
+    <optional>
+        <attribute name="text:restart-on-page" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-linenumbering-separator">
+    <element name="text:linenumbering-separator">
+        <optional>
+            <attribute name="text:increment">
+                <ref name="nonNegativeInteger"/>
+            </attribute>
+        </optional>
+        <text/>
+    </element>
+</define>
+<define name="text-notes-configuration">
+    <element name="text:notes-configuration">
+        <ref name="text-notes-configuration-content"/>
+    </element>
+</define>
+<define name="text-notes-configuration-content" combine="interleave">
+    <ref name="text-note-class"/>
+</define>
+<define name="text-notes-configuration-content" combine="interleave">
+    <optional>
+        <attribute name="text:citation-style-name">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-notes-configuration-content" combine="interleave">
+    <optional>
+        <attribute name="text:citation-body-style-name">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-notes-configuration-content" combine="interleave">
+    <optional>
+        <attribute name="text:default-style-name">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-notes-configuration-content" combine="interleave">
+    <optional>
+        <attribute name="text:master-page-name">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-notes-configuration-content" combine="interleave">
+    <optional>
+        <attribute name="text:start-value">
+            <ref name="nonNegativeInteger"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-notes-configuration-content" combine="interleave">
+    <ref name="common-num-format-prefix-suffix-attlist"/>
+    <optional>
+        <ref name="common-num-format-attlist"/>
+    </optional>
+</define>
+<define name="text-notes-configuration-content" combine="interleave">
+    <optional>
+        <attribute name="text:start-numbering-at">
+            <choice>
+                <value>document</value>
+                <value>chapter</value>
+                <value>page</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="text-notes-configuration-content" combine="interleave">
+    <optional>
+        <attribute name="text:footnotes-position">
+            <choice>
+                <value>text</value>
+                <value>page</value>
+                <value>section</value>
+                <value>document</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="text-notes-configuration-content" combine="interleave">
+    <optional>
+        <element name="text:note-continuation-notice-forward">
+            <text/>
+        </element>
+    </optional>
+</define>
+<define name="text-notes-configuration-content" combine="interleave">
+    <optional>
+        <element name="text:note-continuation-notice-backward">
+            <text/>
+        </element>
+    </optional>
+</define>
+<define name="text-bibliography-configuration">
+    <element name="text:bibliography-configuration">
+        <ref name="text-bibliography-configuration-attlist"/>
+        <zeroOrMore>
+            <ref name="text-sort-key"/>
+        </zeroOrMore>
+    </element>
+</define>
+<define name="text-bibliography-configuration-attlist" combine="interleave">
+    <optional>
+        <attribute name="text:prefix">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="text:suffix">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-bibliography-configuration-attlist" combine="interleave">
+    <optional>
+        <attribute name="text:numbered-entries" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-bibliography-configuration-attlist" combine="interleave">
+    <optional>
+        <attribute name="text:sort-by-position" a:defaultValue="true">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="fo:language">
+            <ref name="languageCode"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="fo:country">
+            <ref name="countryCode"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="text:sort-algorithm">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-sort-key">
+    <element name="text:sort-key">
+        <ref name="text-sort-key-attlist"/>
+        <empty/>
+    </element>
+</define>
+
+<define name="text-sort-key-attlist" combine="interleave">
+    <attribute name="text:key">
+        <choice>
+            <value>address</value>
+            <value>annote</value>
+            <value>author</value>
+            <value>bibliography-type</value>
+            <value>booktitle</value>
+            <value>chapter</value>
+            <value>custom1</value>
+            <value>custom2</value>
+            <value>custom3</value>
+            <value>custom4</value>
+            <value>custom5</value>
+            <value>edition</value>
+            <value>editor</value>
+            <value>howpublished</value>
+            <value>identifier</value>
+            <value>institution</value>
+            <value>isbn</value>
+            <value>issn</value>
+            <value>journal</value>
+            <value>month</value>
+            <value>note</value>
+            <value>number</value>
+            <value>organizations</value>
+            <value>pages</value>
+            <value>publisher</value>
+            <value>report-type</value>
+            <value>school</value>
+            <value>series</value>
+            <value>title</value>
+            <value>url</value>
+            <value>volume</value>
+            <value>year</value>
+        </choice>
+    </attribute>
+    <optional>
+        <attribute name="text:sort-ascending" a:defaultValue="true">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-list-style">
+    <element name="text:list-style">
+        <ref name="text-list-style-attr"/>
+        <zeroOrMore>
+            <ref name="text-list-style-content"/>
+        </zeroOrMore>
+    </element>
+</define>
+<define name="text-list-style-attr" combine="interleave">
+    <attribute name="style:name">
+        <ref name="styleName"/>
+    </attribute>
+</define>
+<define name="text-list-style-attr" combine="interleave">
+    <optional>
+        <attribute name="style:display-name">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-list-style-attr" combine="interleave">
+    <optional>
+        <attribute name="text:consecutive-numbering" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-list-level-style-attr">
+    <attribute name="text:level">
+        <ref name="positiveInteger"/>
+    </attribute>
+</define>
+<define name="text-list-style-content" combine="choice">
+    <element name="text:list-level-style-number">
+        <ref name="text-list-level-style-attr"/>
+        <ref name="text-list-level-style-number-attr"/>
+        <optional>
+            <ref name="style-list-level-properties"/>
+        </optional>
+        <optional>
+            <ref name="style-text-properties"/>
+        </optional>
+    </element>
+</define>
+<define name="text-list-level-style-number-attr" combine="interleave">
+    <optional>
+        <attribute name="text:style-name">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-list-level-style-number-attr" combine="interleave">
+    <ref name="common-num-format-attlist"/>
+    <ref name="common-num-format-prefix-suffix-attlist"/>
+</define>
+<define name="text-list-level-style-number-attr" combine="interleave">
+    <optional>
+        <attribute name="text:display-levels" a:defaultValue="1">
+            <ref name="positiveInteger"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-list-level-style-number-attr" combine="interleave">
+    <optional>
+        <attribute name="text:start-value" a:defaultValue="1">
+            <ref name="positiveInteger"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-list-style-content" combine="choice">
+    <element name="text:list-level-style-bullet">
+        <ref name="text-list-level-style-attr"/>
+        <ref name="text-list-level-style-bullet-attr"/>
+        <optional>
+            <ref name="style-list-level-properties"/>
+        </optional>
+        <optional>
+            <ref name="style-text-properties"/>
+        </optional>
+    </element>
+</define>
+<define name="text-list-level-style-bullet-attr" combine="interleave">
+    <optional>
+        <attribute name="text:style-name">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-list-level-style-bullet-attr" combine="interleave">
+    <attribute name="text:bullet-char">
+        <ref name="character"/>
+    </attribute>
+</define>
+<define name="text-list-level-style-bullet-attr" combine="interleave">
+    <ref name="common-num-format-prefix-suffix-attlist"/>
+</define>
+<define name="text-list-level-style-bullet-attr" combine="interleave">
+    <optional>
+        <attribute name="text:bullet-relative-size">
+            <ref name="percent"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-list-style-content" combine="choice">
+    <element name="text:list-level-style-image">
+        <ref name="text-list-level-style-attr"/>
+        <ref name="text-list-level-style-image-attr"/>
+        <optional>
+            <ref name="style-list-level-properties"/>
+        </optional>
+    </element>
+</define>
+<define name="text-list-level-style-image-attr" combine="interleave">
+    <choice>
+        <ref name="common-draw-data-attlist"/>
+        <ref name="office-binary-data"/>
+    </choice>
+</define>
+<define name="text-outline-style">
+    <element name="text:outline-style">
+        <oneOrMore>
+            <ref name="text-outline-level-style"/>
+        </oneOrMore>
+    </element>
+</define>
+<define name="text-outline-level-style">
+    <element name="text:outline-level-style">
+        <ref name="text-outline-level-style-attlist"/>
+        <optional>
+            <ref name="style-list-level-properties"/>
+        </optional>
+        <optional>
+            <ref name="style-text-properties"/>
+        </optional>
+    </element>
+</define>
+<define name="text-outline-level-style-attlist" combine="interleave">
+    <attribute name="text:level">
+        <ref name="positiveInteger"/>
+    </attribute>
+</define>
+<define name="text-outline-level-style-attlist" combine="interleave">
+    <optional>
+        <attribute name="text:style-name">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-outline-level-style-attlist" combine="interleave">
+    <ref name="common-num-format-attlist"/>
+    <ref name="common-num-format-prefix-suffix-attlist"/>
+</define>
+<define name="text-outline-level-style-attlist" combine="interleave">
+    <optional>
+        <attribute name="text:display-levels" a:defaultValue="1">
+            <ref name="positiveInteger"/>
+        </attribute>
+    </optional>
+</define>
+<define name="text-outline-level-style-attlist" combine="interleave">
+    <optional>
+        <attribute name="text:start-value" a:defaultValue="1">
+            <ref name="positiveInteger"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-style-content" combine="choice">
+    <group>
+        <attribute name="style:family">
+            <value>table</value>
+        </attribute>
+        <optional>
+            <ref name="style-table-properties"/>
+        </optional>
+    </group>
+</define>
+<define name="style-style-content" combine="choice">
+    <group>
+        <attribute name="style:family">
+            <value>table-column</value>
+        </attribute>
+        <optional>
+            <ref name="style-table-column-properties"/>
+        </optional>
+    </group>
+</define>
+<define name="style-style-content" combine="choice">
+    <group>
+        <attribute name="style:family">
+            <value>table-row</value>
+        </attribute>
+        <optional>
+            <ref name="style-table-row-properties"/>
+        </optional>
+    </group>
+</define>
+<define name="style-style-content" combine="choice">
+    <group>
+        <attribute name="style:family">
+            <value>table-cell</value>
+        </attribute>
+        <optional>
+            <ref name="style-table-cell-properties"/>
+        </optional>
+        <optional>
+            <ref name="style-paragraph-properties"/>
+        </optional>
+        <optional>
+            <ref name="style-text-properties"/>
+        </optional>
+    </group>
+</define>
+<define name="style-style-content" combine="choice">
+    <group>
+        <attribute name="style:family">
+            <choice>
+                <value>graphic</value>
+                <value>presentation</value>
+            </choice>
+        </attribute>
+        <optional>
+            <ref name="style-graphic-properties"/>
+        </optional>
+        <optional>
+            <ref name="style-paragraph-properties"/>
+        </optional>
+        <optional>
+            <ref name="style-text-properties"/>
+        </optional>
+    </group>
+</define>
+
+<define name="style-graphic-properties">
+    <element name="style:graphic-properties">
+        <ref name="style-graphic-properties-content"/>
+    </element>
+</define>
+
+<define name="style-graphic-properties-content">
+    <ref name="style-properties-content"/>
+</define>
+
+<define name="style-graphic-properties-content-strict">
+    <ref name="style-graphic-properties-attlist"/>
+    <ref name="style-graphic-fill-properties-attlist"/>
+    <ref name="style-graphic-properties-elements"/>
+</define>
+
+<define name=" style-graphic-properties-elements">
+    <empty/>
+</define>
+<define name="style-style-content" combine="choice">
+    <group>
+        <attribute name="style:family">
+            <value>drawing-page</value>
+        </attribute>
+        <optional>
+            <ref name="style-drawing-page-properties"/>
+        </optional>
+    </group>
+</define>
+
+<define name="style-drawing-page-properties">
+    <element name="style:drawing-page-properties">
+        <ref name="style-drawing-page-properties-content"/>
+    </element>
+</define>
+
+<define name="style-drawing-page-properties-content">
+    <ref name="style-properties-content"/>
+</define>
+
+<define name="style-drawing-page-properties-content-strict">
+    <ref name="style-graphic-fill-properties-attlist"/>
+    <ref name="style-drawing-page-properties-attlist"/>
+    <ref name="style-drawing-page-properties-elements"/>
+</define>
+<define name="draw-gradient">
+    <element name="draw:gradient">
+        <ref name="common-draw-gradient-attlist"/>
+        <ref name="draw-gradient-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="common-draw-gradient-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:name">
+            <ref name="styleName"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-draw-gradient-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:display-name">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-draw-gradient-attlist" combine="interleave">
+    <attribute name="draw:style">
+        <ref name="gradient-style"/>
+    </attribute>
+</define>
+<define name="gradient-style">
+    <choice>
+        <value>linear</value>
+        <value>axial</value>
+        <value>radial</value>
+        <value>ellipsoid</value>
+        <value>square</value>
+        <value>rectangular</value>
+    </choice>
+</define>
+<define name="common-draw-gradient-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:cx">
+            <ref name="percent"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="draw:cy">
+            <ref name="percent"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-gradient-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:start-color">
+            <ref name="color"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="draw:end-color">
+            <ref name="color"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-gradient-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:start-intensity">
+            <ref name="percent"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="draw:end-intensity">
+            <ref name="percent"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-draw-gradient-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:angle">
+            <ref name="integer"/>
+        </attribute>
+    </optional>
+</define>
+<define name="common-draw-gradient-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:border">
+            <ref name="percent"/>
+        </attribute>
+    </optional>
+</define>
+<define name="svg-linearGradient">
+    <element name="svg:linearGradient">
+        <ref name="common-svg-gradient-attlist"/>
+        <optional>
+            <attribute name="svg:x1" a:defaultValue="0%">
+                <choice>
+                    <ref name="coordinate"/>
+                    <ref name="percent"/>
+                </choice>                
+            </attribute>
+        </optional>
+        <optional>
+            <attribute name="svg:y1" a:defaultValue="0%">
+                <choice>
+                    <ref name="coordinate"/>
+                    <ref name="percent"/>
+                </choice>                
+            </attribute>
+        </optional>
+        <optional>
+            <attribute name="svg:x2" a:defaultValue="100%">
+                <choice>
+                    <ref name="coordinate"/>
+                    <ref name="percent"/>
+                </choice>                
+            </attribute>
+        </optional>
+        <optional>
+            <attribute name="svg:y2" a:defaultValue="100%">
+                <choice>
+                    <ref name="coordinate"/>
+                    <ref name="percent"/>
+                </choice>                
+            </attribute>
+        </optional>
+        <zeroOrMore>
+            <ref name="svg-stop"/>
+        </zeroOrMore>
+    </element>
+</define>
+
+<define name="svg-radialGradient">
+    <element name="svg:radialGradient">
+        <ref name="common-svg-gradient-attlist"/>
+        <optional>
+            <attribute name="svg:cx" a:defaultValue="50%">
+                <choice>
+                    <ref name="coordinate"/>
+                    <ref name="percent"/>
+                </choice>                
+            </attribute>
+        </optional>
+        <optional>
+            <attribute name="svg:cy" a:defaultValue="50%">
+                <choice>
+                    <ref name="coordinate"/>
+                    <ref name="percent"/>
+                </choice>                
+            </attribute>
+        </optional>
+        <optional>
+            <attribute name="svg:r" a:defaultValue="50%">
+                <choice>
+                    <ref name="coordinate"/>
+                    <ref name="percent"/>
+                </choice>                
+            </attribute>
+        </optional>
+        <optional>
+            <attribute name="svg:fx">
+                <choice>
+                    <ref name="coordinate"/>
+                    <ref name="percent"/>
+                </choice>                
+            </attribute>
+        </optional>
+        <optional>
+            <attribute name="svg:fy">
+                <choice>
+                    <ref name="coordinate"/>
+                    <ref name="percent"/>
+                </choice>                
+            </attribute>
+        </optional>
+        <zeroOrMore>
+            <ref name="svg-stop"/>
+        </zeroOrMore>
+    </element>
+</define>
+
+<define name="svg-stop">
+    <element name="svg:stop">
+        <attribute name="svg:offset">
+            <choice>
+                <ref name="double"/>
+                <ref name="percent"/>
+            </choice>
+        </attribute>
+        <optional>
+            <attribute name="svg:stop-color">
+                <ref name="color"/>
+            </attribute>
+        </optional>
+        <optional>
+            <attribute name="svg:stop-opacity">
+                <ref name="double"/>
+            </attribute>
+        </optional>
+    </element>
+</define>
+
+<define name="common-svg-gradient-attlist" combine="interleave">
+    <optional>
+        <attribute name="svg:gradientUnits" a:defaultValue="objectBoundingBox">
+            <value>objectBoundingBox</value>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="svg:gradientTransform">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="svg:spreadMethod" a:defaultValue="pad">
+            <choice>
+                <value>pad</value>
+                <value>reflect</value>
+                <value>repeat</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="common-svg-gradient-attlist" combine="interleave">
+    <attribute name="draw:name">
+        <ref name="styleName"/>
+    </attribute>
+</define>
+<define name="common-svg-gradient-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:display-name">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-hatch">
+    <element name="draw:hatch">
+        <ref name="draw-hatch-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="draw-hatch-attlist" combine="interleave">
+    <attribute name="draw:name">
+        <ref name="styleName"/>
+    </attribute>
+</define>
+<define name="draw-hatch-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:display-name">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-hatch-attlist" combine="interleave">
+    <attribute name="draw:style">
+        <choice>
+            <value>single</value>
+            <value>double</value>
+            <value>triple</value>
+        </choice>
+    </attribute>
+</define>
+<define name="draw-hatch-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:color">
+            <ref name="color"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-hatch-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:distance">
+            <ref name="length"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-hatch-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:rotation">
+            <ref name="integer"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-fill-image">
+    <element name="draw:fill-image">
+        <ref name="draw-fill-image-attlist"/>
+        <attribute name="xlink:href">
+            <ref name="anyURI"/>
+        </attribute>
+        <optional>
+            <attribute name="xlink:type" a:defaultValue="simple">
+                <choice>
+                    <value>simple</value>
+                </choice>
+            </attribute>
+        </optional>
+        <optional>
+            <attribute name="xlink:show" a:defaultValue="embed">
+                <choice>
+                    <value>embed</value>
+                </choice>
+            </attribute>
+        </optional>
+        <optional>
+            <attribute name="xlink:actuate" a:defaultValue="onLoad">
+                <choice>
+                    <value>onLoad</value>
+                </choice>
+            </attribute>
+        </optional>
+        <empty/>
+    </element>
+</define>
+<define name="draw-fill-image-attlist" combine="interleave">
+    <attribute name="draw:name">
+        <ref name="styleName"/>
+    </attribute>
+</define>
+<define name="draw-fill-image-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:display-name">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-fill-image-attlist" combine="interleave">
+    <optional>
+        <attribute name="svg:width">
+            <ref name="length"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="svg:height">
+            <ref name="length"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-opacity">
+    <element name="draw:opacity">
+        <ref name="common-draw-gradient-attlist"/>
+        <ref name="draw-opacity-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="draw-opacity-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:start">
+            <ref name="percent"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="draw:end">
+            <ref name="percent"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-marker">
+    <element name="draw:marker">
+        <ref name="draw-marker-attlist"/>
+        <ref name="common-draw-viewbox-attlist"/>
+        <ref name="common-draw-path-data-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="draw-marker-attlist" combine="interleave">
+    <attribute name="draw:name">
+        <ref name="styleName"/>
+    </attribute>
+</define>
+<define name="draw-marker-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:display-name">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-stroke-dash">
+    <element name="draw:stroke-dash">
+        <ref name="draw-stroke-dash-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="draw-stroke-dash-attlist" combine="interleave">
+    <attribute name="draw:name">
+        <ref name="styleName"/>
+    </attribute>
+</define>
+<define name="draw-stroke-dash-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:display-name">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-stroke-dash-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:style">
+            <choice>
+                <value>rect</value>
+                <value>round</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-stroke-dash-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:dots1">
+            <ref name="integer"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="draw:dots1-length">
+            <ref name="length"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="draw:dots2">
+            <ref name="integer"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="draw:dots2-length">
+            <ref name="length"/>
+        </attribute>
+    </optional>
+</define>
+<define name="draw-stroke-dash-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:distance">
+            <ref name="length"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-presentation-page-layout">
+    <element name="style:presentation-page-layout">
+        <attribute name="style:name">
+            <ref name="styleName"/>
+        </attribute>
+        <optional>
+            <attribute name="style:display-name">
+                <ref name="string"/>
+            </attribute>
+        </optional>
+        <zeroOrMore>
+            <ref name="presentation-placeholder"/>
+        </zeroOrMore>
+    </element>
+</define>
+<define name="presentation-placeholder">
+    <element name="presentation:placeholder">
+        <attribute name="presentation:object">
+            <ref name="presentation-classes"/>
+        </attribute>
+        <attribute name="svg:x">
+            <choice>
+                <ref name="coordinate"/>
+                <ref name="percent"/>
+            </choice>
+        </attribute>
+        <attribute name="svg:y">
+            <choice>
+                <ref name="coordinate"/>
+                <ref name="percent"/>
+            </choice>
+        </attribute>
+        <attribute name="svg:width">
+            <choice>
+                <ref name="length"/>
+                <ref name="percent"/>
+            </choice>
+        </attribute>
+        <attribute name="svg:height">
+            <choice>
+                <ref name="length"/>
+                <ref name="percent"/>
+            </choice>
+        </attribute>
+        <empty/>
+    </element>
+</define>
+<define name="style-style-content" combine="choice">
+    <group>
+        <attribute name="style:family">
+            <value>chart</value>
+        </attribute>
+        <optional>
+            <ref name="style-chart-properties"/>
+        </optional>
+        <optional>
+            <ref name="style-graphic-properties"/>
+        </optional>
+        <optional>
+            <ref name="style-paragraph-properties"/>
+        </optional>
+        <optional>
+            <ref name="style-text-properties"/>
+        </optional>
+    </group>
+</define>
+<define name="style-properties-content">
+    <ref name="anyAttListOrElements"/>
+</define>
+<define name="style-page-layout-properties">
+    <element name="style:page-layout-properties">
+        <ref name="style-page-layout-properties-content"/>
+    </element>
+</define>
+
+<define name="style-page-layout-properties-content">
+    <ref name="style-properties-content"/>
+</define>
+
+<define name="style-page-layout-properties-content-strict">
+    <ref name="style-page-layout-properties-attlist"/>
+    <ref name="style-page-layout-properties-elements"/>
+</define>
+<define name="style-page-layout-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="fo:page-width">
+            <ref name="length"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="fo:page-height">
+            <ref name="length"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-page-layout-properties-attlist" combine="interleave">
+    <optional>
+        <ref name="common-num-format-attlist"/>
+    </optional>
+    <ref name="common-num-format-prefix-suffix-attlist"/>
+</define>
+<define name="style-page-layout-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:paper-tray-name">
+            <choice>
+                <value>default</value>
+                <ref name="string"/>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-page-layout-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:print-orientation">
+            <choice>
+                <value>portrait</value>
+                <value>landscape</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-page-layout-properties-attlist" combine="interleave">
+    <ref name="common-horizontal-margin-attlist"/>
+    <ref name="common-vertical-margin-attlist"/>
+    <ref name="common-margin-attlist"/>
+</define>
+<define name="style-page-layout-properties-attlist" combine="interleave">
+    <ref name="common-border-attlist"/>
+</define>
+<define name="style-page-layout-properties-attlist" combine="interleave">
+    <ref name="common-border-line-width-attlist"/>
+</define>
+<define name="style-page-layout-properties-attlist" combine="interleave">
+    <ref name="common-padding-attlist"/>
+</define>
+<define name="style-page-layout-properties-attlist" combine="interleave">
+    <ref name="common-shadow-attlist"/>
+</define>
+<define name="style-page-layout-properties-attlist" combine="interleave">
+    <ref name="common-background-color-attlist"/>
+</define>
+<define name="style-page-layout-properties-elements" combine="interleave">
+    <ref name="style-background-image"/>
+</define>
+<define name="style-page-layout-properties-elements" combine="interleave">
+    <ref name="style-columns"/>
+</define>
+<define name="style-page-layout-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:register-truth-ref-style-name">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-page-layout-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:print">
+            <list>
+                <zeroOrMore>
+                    <choice>
+                        <value>headers</value>
+                        <value>grid</value>
+                        <value>annotations</value>
+                        <value>objects</value>
+                        <value>charts</value>
+                        <value>drawings</value>
+                        <value>formulas</value>
+                        <value>zero-values</value>
+                    </choice>
+                </zeroOrMore>
+            </list>
+        </attribute>
+    </optional>
+</define>
+<define name="style-page-layout-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:print-page-order">
+            <choice>
+                <value>ttb</value>
+                <value>ltr</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-page-layout-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:first-page-number">
+            <choice>
+                <ref name="positiveInteger"/>
+                <value>continue</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-page-layout-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:scale-to">
+            <ref name="percent"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="style:scale-to-pages">
+            <ref name="positiveInteger"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-page-layout-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:table-centering">
+            <choice>
+                <value>horizontal</value>
+                <value>vertical</value>
+                <value>both</value>
+                <value>none</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-page-layout-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:footnote-max-height">
+            <ref name="length"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-page-layout-properties-attlist" combine="interleave">
+    <ref name="common-writing-mode-attlist"/>
+</define>
+<define name="style-page-layout-properties-elements" combine="interleave">
+    <ref name="style-footnote-sep"/>
+</define>
+
+<define name="style-footnote-sep">
+    <optional>
+        <element name="style:footnote-sep">
+            <ref name="style-footnote-sep-attlist"/>
+            <empty/>
+        </element>
+    </optional>
+</define>
+<define name="style-footnote-sep-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:width">
+            <ref name="length"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="style:rel-width">
+            <ref name="percent"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="style:color">
+            <ref name="color"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="style:line-style">
+            <ref name="lineStyle"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="style:adjustment" a:defaultValue="left">
+            <choice>
+                <value>left</value>
+                <value>center</value>
+                <value>right</value>
+            </choice>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="style:distance-before-sep">
+            <ref name="length"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="style:distance-after-sep">
+            <ref name="length"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-page-layout-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:layout-grid-mode">
+            <choice>
+                <value>none</value>
+                <value>line</value>
+                <value>both</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-page-layout-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:layout-grid-base-height">
+            <ref name="length"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-page-layout-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:layout-grid-ruby-height">
+            <ref name="length"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-page-layout-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:layout-grid-lines">
+            <ref name="positiveInteger"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-page-layout-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:layout-grid-color">
+            <ref name="color"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-page-layout-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:layout-grid-ruby-below">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-page-layout-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:layout-grid-print">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-page-layout-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:layout-grid-display">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-header-footer-properties">
+    <element name="style:header-footer-properties">
+        <ref name="style-header-footer-properties-content"/>
+    </element>
+</define>
+
+<define name="style-header-footer-properties-content">
+    <ref name="style-properties-content"/>
+</define>
+
+<define name="style-header-footer-properties-content-strict">
+        <ref name="style-header-footer-properties-attlist"/>
+        <ref name="style-header-footer-properties-elements"/>
+</define>
+<define name="style-header-footer-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="svg:height">
+            <ref name="length"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="fo:min-height">
+            <ref name="length"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-header-footer-properties-attlist" combine="interleave">
+    <ref name="common-horizontal-margin-attlist"/>
+    <ref name="common-vertical-margin-attlist"/>
+    <ref name="common-margin-attlist"/>
+</define>
+<define name="style-header-footer-properties-attlist" combine="interleave">
+    <ref name="common-border-attlist"/>
+</define>
+<define name="style-header-footer-properties-attlist" combine="interleave">
+    <ref name="common-border-line-width-attlist"/>
+</define>
+<define name="style-header-footer-properties-attlist" combine="interleave">
+    <ref name="common-padding-attlist"/>
+</define>
+<define name="style-header-footer-properties-attlist" combine="interleave">
+    <ref name="common-background-color-attlist"/>
+</define>
+<define name="style-header-footer-properties-elements" combine="interleave">
+    <ref name="style-background-image"/>
+</define>
+<define name="style-header-footer-properties-attlist" combine="interleave">
+    <ref name="common-shadow-attlist"/>
+</define>
+<define name="style-header-footer-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:dynamic-spacing">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-text-properties">
+    <element name="style:text-properties">
+        <ref name="style-text-properties-content"/>
+    </element>
+</define>
+
+<define name="style-text-properties-content">
+    <ref name="style-properties-content"/>
+</define>
+
+<define name="style-text-properties-content-strict">
+    <ref name="style-text-properties-attlist"/>
+    <ref name="style-text-properties-elements"/>
+</define>
+
+<define name="style-text-properties-elements">
+    <empty/>
+</define>
+<define name="style-text-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="fo:font-variant">
+            <ref name="fontVariant"/>
+        </attribute>
+    </optional>
+</define>
+
+<define name="fontVariant">
+    <choice>
+        <value>normal</value>
+        <value>small-caps</value>
+    </choice>
+</define>
+<define name="style-text-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="fo:text-transform">
+            <choice>
+                <value>none</value>
+                <value>lowercase</value>
+                <value>uppercase</value>
+                <value>capitalize</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-text-properties-attlist" combine="interleave">
+    <optional>
+            <attribute name="fo:color">
+            <ref name="color"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-text-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:use-window-font-color">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-text-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:text-outline">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-text-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:text-line-through-type">
+            <ref name="lineType"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-text-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:text-line-through-style">
+            <ref name="lineStyle"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-text-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:text-line-through-width">
+            <ref name="lineWidth"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-text-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:text-line-through-color">
+            <choice>
+                <value>font-color</value>
+                <ref name="color"/>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-text-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:text-line-through-text">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-text-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:text-line-through-text-style">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-text-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:text-position">
+            <list>
+                <choice>
+                    <ref name="percent"/>
+                    <value>super</value>
+                    <value>sub</value>
+                </choice>
+                <optional>
+                    <ref name="percent"/>
+                </optional>
+            </list>
+        </attribute>
+    </optional>
+</define>
+<define name="style-text-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:font-name">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="style:font-name-asian">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="style:font-name-complex">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-text-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="fo:font-family">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="style:font-family-asian">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="style:font-family-complex">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-text-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:font-family-generic">
+            <ref name="fontFamilyGeneric"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="style:font-family-generic-asian">
+            <ref name="fontFamilyGeneric"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="style:font-family-generic-complex">
+            <ref name="fontFamilyGeneric"/>
+        </attribute>
+    </optional>
+</define>
+
+<define name="fontFamilyGeneric">
+    <choice>
+        <value>roman</value>
+        <value>swiss</value>
+        <value>modern</value>
+        <value>decorative</value>
+        <value>script</value>
+        <value>system</value>
+    </choice>
+</define>
+<define name="style-text-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:font-style-name">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="style:font-style-name-asian">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="style:font-style-name-complex">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-text-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:font-pitch">
+            <ref name="fontPitch"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="style:font-pitch-asian">
+            <ref name="fontPitch"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="style:font-pitch-complex">
+            <ref name="fontPitch"/>
+        </attribute>
+    </optional>
+</define>
+
+<define name="fontPitch">
+    <choice>
+        <value>fixed</value>
+        <value>variable</value>
+    </choice>
+</define>
+<define name="style-text-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:font-charset">
+            <ref name="textEncoding"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="style:font-charset-asian">
+            <ref name="textEncoding"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="style:font-charset-complex">
+            <ref name="textEncoding"/>
+        </attribute>
+    </optional>
+</define>
+
+<define name="textEncoding">
+    <data type="string">
+        <param name="pattern">[A-Za-z][A-Za-z0-9._\-]*</param>
+    </data>
+</define>
+<define name="style-text-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="fo:font-size">
+            <choice>
+                <ref name="positiveLength"/>
+                <ref name="percent"/>
+            </choice>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="style:font-size-asian">
+            <choice>
+                <ref name="positiveLength"/>
+                <ref name="percent"/>
+            </choice>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="style:font-size-complex">
+            <choice>
+                <ref name="positiveLength"/>
+                <ref name="percent"/>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-text-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:font-size-rel">
+            <ref name="length"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="style:font-size-rel-asian">
+            <ref name="length"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="style:font-size-rel-complex">
+            <ref name="length"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-text-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:script-type">
+            <choice>
+                <value>latin</value>
+                <value>asian</value>
+                <value>complex</value>
+                <value>ignore</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-text-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="fo:letter-spacing">
+            <choice>
+                <ref name="length"/>
+                <value>normal</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-text-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="fo:language">
+            <ref name="languageCode"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="style:language-asian">
+            <ref name="languageCode"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="style:language-complex">
+            <ref name="languageCode"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-text-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="fo:country">
+            <ref name="countryCode"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="style:country-asian">
+            <ref name="countryCode"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="style:country-complex">
+            <ref name="countryCode"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-text-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="fo:font-style">
+            <ref name="fontStyle"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="style:font-style-asian">
+            <ref name="fontStyle"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="style:font-style-complex">
+            <ref name="fontStyle"/>
+        </attribute>
+    </optional>
+</define>
+
+<define name="fontStyle">
+    <choice>
+        <value>normal</value>
+        <value>italic</value>
+        <value>oblique</value>
+    </choice>
+</define>
+<define name="style-text-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:font-relief">
+            <choice>
+            <value>none</value>
+                <value>embossed</value>
+                <value>engraved</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-text-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="fo:text-shadow">
+            <ref name="shadowType"/>
+        </attribute>
+    </optional>
+</define>
+
+<define name="shadowType">
+    <choice>
+        <value>none</value>
+        <!-- The following string must match an XSL shadow decl -->
+        <ref name="string"/>
+    </choice>
+</define>
+<define name="style-text-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:text-underline-type">
+            <ref name="lineType"/>
+        </attribute>
+    </optional>
+</define>
+
+<define name="lineType">
+    <choice>
+        <value>none</value>
+        <value>single</value>
+        <value>double</value>
+    </choice>
+</define>
+<define name="style-text-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:text-underline-style">
+            <ref name="lineStyle"/>
+        </attribute>
+    </optional>
+</define>
+
+<define name="lineStyle">
+    <choice>
+        <value>none</value>
+        <value>solid</value>
+        <value>dotted</value>
+        <value>dash</value>
+        <value>long-dash</value>
+        <value>dot-dash</value>
+        <value>dot-dot-dash</value>
+        <value>wave</value>
+    </choice>
+</define>
+<define name="style-text-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:text-underline-width">
+            <ref name="lineWidth"/>
+        </attribute>
+    </optional>
+</define>
+
+<define name="lineWidth">
+    <choice>
+        <value>auto</value>
+        <value>normal</value>
+        <value>bold</value>
+        <value>thin</value>
+        <value>dash</value>
+        <value>medium</value>
+        <value>thick</value>
+        <ref name="positiveInteger"/>
+        <ref name="percent"/>
+        <ref name="positiveLength"/>
+    </choice>
+</define>
+<define name="style-text-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:text-underline-color">
+            <choice>
+                <value>font-color</value>
+                <ref name="color"/>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-text-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="fo:font-weight">
+            <ref name="fontWeight"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="style:font-weight-asian">
+            <ref name="fontWeight"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="style:font-weight-complex">
+            <ref name="fontWeight"/>
+        </attribute>
+    </optional>
+</define>
+
+<define name="fontWeight">
+    <choice>
+        <value>normal</value>
+        <value>bold</value>
+        <value>100</value>
+        <value>200</value>
+        <value>300</value>
+        <value>400</value>
+        <value>500</value>
+        <value>600</value>
+        <value>700</value>
+        <value>800</value>
+        <value>900</value>
+    </choice>
+</define>
+<define name="style-text-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:text-underline-mode">
+            <ref name="lineMode"/>
+        </attribute>
+    </optional>
+</define>
+
+<define name="lineMode">
+    <choice>
+        <value>continuous</value>
+        <value>skip-white-space</value>
+    </choice>
+</define>
+<define name="style-text-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:text-line-through-mode">
+            <ref name="lineMode"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-text-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:letter-kerning">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-text-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:text-blinking">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-text-properties-attlist" combine="interleave">
+    <ref name="common-background-color-attlist"/>
+</define>
+<define name="style-text-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:text-combine">
+            <choice>
+                <value>none</value>
+                <value>letters</value>
+                <value>lines</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-text-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:text-combine-start-char">
+            <ref name="character"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="style:text-combine-end-char">
+            <ref name="character"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-text-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:text-emphasize">
+            <choice>
+                <value>none</value>
+                <list>
+                    <choice>
+                        <value>none</value>
+                        <value>accent</value>
+                        <value>dot</value>
+                        <value>circle</value>
+                        <value>disc</value>
+                    </choice>
+                    <choice>
+                        <value>above</value>
+                        <value>below</value>
+                    </choice>
+                </list>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-text-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:text-scale">
+            <ref name="percent"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-text-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:text-rotation-angle">
+            <ref name="integer"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-text-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:text-rotation-scale">
+            <choice>
+                <value>fixed</value>
+                <value>line-height</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-text-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="fo:hyphenate">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-text-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="fo:hyphenation-remain-char-count">
+            <ref name="positiveInteger"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-text-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="fo:hyphenation-push-char-count">
+            <ref name="positiveInteger"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-text-properties-attlist" combine="interleave">
+    <choice>
+        <attribute name="text:display">
+            <value>true</value>
+        </attribute>
+        <attribute name="text:display">
+            <value>none</value>
+        </attribute>
+        <group>
+            <attribute name="text:display">
+                <value>condition</value>
+            </attribute>
+            <attribute name="text:condition">
+                <value>none</value>
+            </attribute>
+        </group>
+        <empty/>
+    </choice>
+</define>
+<define name="style-paragraph-properties">
+    <element name="style:paragraph-properties">
+        <ref name="style-paragraph-properties-content"/>
+    </element>
+</define>
+
+<define name="style-paragraph-properties-content">
+    <ref name="style-properties-content"/>
+</define>
+
+<define name="style-paragraph-properties-content-strict">
+    <ref name="style-paragraph-properties-attlist"/>
+    <ref name="style-paragraph-properties-elements"/>
+</define>
+<define name="style-paragraph-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="fo:line-height">
+            <choice>
+                <value>normal</value>
+                <ref name="nonNegativeLength"/>
+                <ref name="percent"/>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-paragraph-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:line-height-at-least">
+            <ref name="nonNegativeLength"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-paragraph-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:line-spacing">
+            <ref name="length"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-paragraph-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:font-independent-line-spacing">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-paragraph-properties-attlist" combine="interleave">
+    <ref name="common-text-align"/>
+</define>
+
+<define name="common-text-align">
+    <optional>
+        <attribute name="fo:text-align">
+            <choice>
+                <value>start</value>
+                <value>end</value>
+                <value>left</value>
+                <value>right</value>
+                <value>center</value>
+                <value>justify</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-paragraph-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="fo:text-align-last">
+            <choice>
+                <value>start</value>
+                <value>center</value>
+                <value>justify</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-paragraph-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:justify-single-word">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-paragraph-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="fo:keep-together">
+            <choice>
+                <value>auto</value>
+                <value>always</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-paragraph-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="fo:widows">
+            <ref name="nonNegativeInteger"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-paragraph-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="fo:orphans">
+            <ref name="nonNegativeInteger"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-paragraph-properties-elements" combine="interleave">
+    <ref name="style-tab-stops"/>
+</define>
+
+<define name="style-tab-stops">
+    <optional>
+        <element name="style:tab-stops">
+            <zeroOrMore>
+                <ref name="style-tab-stop"/>
+            </zeroOrMore>
+        </element>
+    </optional>
+</define>
+
+<define name="style-tab-stop">
+    <element name="style:tab-stop">
+        <ref name="style-tab-stop-attlist"/>
+        <empty/>
+    </element>
+</define>
+<define name="style-tab-stop-attlist" combine="interleave">
+    <attribute name="style:position">
+        <ref name="nonNegativeLength"/>
+    </attribute>
+</define>
+<define name="style-tab-stop-attlist" combine="interleave">
+    <choice>
+        <optional>
+            <attribute name="style:type" a:defaultValue="left">
+                <choice>
+                    <value>left</value>
+                    <value>center</value>
+                    <value>right</value>
+                </choice>
+            </attribute>
+        </optional>
+        <group>
+            <attribute name="style:type">
+                <value>char</value>
+            </attribute>
+            <ref name="style-tab-stop-char-attlist"/>
+        </group>
+    </choice>
+</define>
+<define name="style-tab-stop-char-attlist" combine="interleave">
+    <attribute name="style:char">
+        <ref name="character"/>
+    </attribute>
+</define>
+<define name="style-tab-stop-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:leader-type">
+            <ref name="lineType"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-tab-stop-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:leader-style">
+            <ref name="lineStyle"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-tab-stop-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:leader-width">
+            <ref name="lineWidth"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-tab-stop-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:leader-color">
+            <choice>
+                <value>font-color</value>
+                <ref name="color"/>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-tab-stop-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:leader-text" a:defaultValue=" ">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-tab-stop-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:leader-text-style">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-paragraph-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:tab-stop-distance">
+            <ref name="nonNegativeLength"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-paragraph-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="fo:hyphenation-keep">
+            <choice>
+                <value>auto</value>
+                <value>page</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-paragraph-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="fo:hyphenation-ladder-count">
+            <choice>
+                <value>no-limit</value>
+                <ref name="positiveInteger"/>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-paragraph-properties-elements" combine="interleave">
+    <ref name="style-drop-cap"/>
+</define>
+
+<define name="style-drop-cap">
+    <optional>
+        <element name="style:drop-cap">
+            <ref name="style-drop-cap-attlist"/>
+            <empty/>
+        </element>
+    </optional>
+</define>
+<define name="style-drop-cap-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:length" a:defaultValue="1">
+            <choice>
+                <value>word</value>
+                <ref name="positiveInteger"/>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-drop-cap-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:lines" a:defaultValue="1">
+            <ref name="positiveInteger"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-drop-cap-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:distance" a:defaultValue="0cm">
+            <ref name="length"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-drop-cap-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:style-name">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-paragraph-properties-attlist" combine="interleave">
+        <optional>
+            <attribute name="style:register-true">
+                <ref name="boolean"/>
+            </attribute>
+        </optional>
+    </define>
+<define name="style-paragraph-properties-attlist" combine="interleave">
+    <ref name="common-horizontal-margin-attlist"/>
+</define>
+
+<define name="common-horizontal-margin-attlist">
+    <optional>
+        <attribute name="fo:margin-left">
+            <choice>
+                <ref name="length"/>
+                <ref name="percent"/>
+            </choice>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="fo:margin-right">
+            <choice>
+                <ref name="length"/>
+                <ref name="percent"/>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-paragraph-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="fo:text-indent">
+            <choice>
+                <ref name="length"/>
+                <ref name="percent"/>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-paragraph-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:auto-text-indent">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-paragraph-properties-attlist" combine="interleave">
+    <ref name="common-vertical-margin-attlist"/>
+</define>
+
+<define name="common-vertical-margin-attlist">
+    <optional>
+        <attribute name="fo:margin-top">
+            <choice>
+                <ref name="nonNegativeLength"/>
+                <ref name="percent"/>
+            </choice>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="fo:margin-bottom">
+            <choice>
+                <ref name="nonNegativeLength"/>
+                <ref name="percent"/>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-paragraph-properties-attlist" combine="interleave">
+    <ref name="common-margin-attlist"/>
+</define>
+
+<define name="common-margin-attlist">
+    <optional>
+        <attribute name="fo:margin">
+            <choice>
+                <ref name="nonNegativeLength"/>
+                <ref name="percent"/>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-paragraph-properties-attlist" combine="interleave">
+    <ref name="common-break-attlist"/>
+</define>
+
+<define name="common-break-attlist">
+    <optional>
+        <attribute name="fo:break-before">
+            <choice>
+                <value>auto</value>
+                <value>column</value>
+                <value>page</value>
+            </choice>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="fo:break-after">
+            <choice>
+                <value>auto</value>
+                <value>column</value>
+                <value>page</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-paragraph-properties-attlist" combine="interleave">
+    <ref name="common-background-color-attlist"/>
+</define>
+
+<define name="common-background-color-attlist">
+    <optional>
+        <attribute name="fo:background-color">
+            <choice>
+                <value>transparent</value>
+                <ref name="color"/>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-paragraph-properties-elements" combine="interleave">
+    <ref name="style-background-image"/>
+</define>
+
+<define name="style-background-image">
+    <optional>
+        <element name="style:background-image">
+            <ref name="style-background-image-attlist"/>
+            <choice>
+                <ref name="common-draw-data-attlist"/>
+                <ref name="office-binary-data"/>
+                <empty/>
+            </choice>
+        </element>
+    </optional>
+</define>
+<define name="style-background-image-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:repeat" a:defaultValue="repeat">
+            <choice>
+                <value>no-repeat</value>
+                <value>repeat</value>
+                <value>stretch</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-background-image-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:position" a:defaultValue="center">
+            <choice>
+                <value>left</value>
+                <value>center</value>
+                <value>right</value>
+                <value>top</value>
+                <value>bottom</value>
+                <list>
+                    <ref name="horiBackPos"/>
+                    <ref name="vertBackPos"/>
+                </list>
+                <list>
+                    <ref name="vertBackPos"/>
+                    <ref name="horiBackPos"/>
+                </list>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+
+<define name="horiBackPos">
+    <choice>
+        <value>left</value>
+        <value>center</value>
+        <value>right</value>
+    </choice>
+</define>
+<define name="vertBackPos">
+    <choice>
+        <value>top</value>
+        <value>center</value>
+        <value>bottom</value>
+    </choice>
+</define>
+<define name="style-background-image-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:filter-name">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-background-image-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:opacity">
+            <ref name="percent"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-paragraph-properties-attlist" combine="interleave">
+    <ref name="common-border-attlist"/>
+</define>
+
+<define name="common-border-attlist">
+    <optional>
+        <attribute name="fo:border">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="fo:border-top">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="fo:border-bottom">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="fo:border-left">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="fo:border-right">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-paragraph-properties-attlist" combine="interleave">
+    <ref name="common-border-line-width-attlist"/>
+</define>
+
+<define name="common-border-line-width-attlist">
+    <optional>
+        <attribute name="style:border-line-width">
+            <ref name="borderWidths"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="style:border-line-width-top">
+            <ref name="borderWidths"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="style:border-line-width-bottom">
+            <ref name="borderWidths"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="style:border-line-width-left">
+            <ref name="borderWidths"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="style:border-line-width-right">
+            <ref name="borderWidths"/>
+        </attribute>
+    </optional>
+</define>
+
+<define name="borderWidths">
+    <list>
+        <ref name="positiveLength"/>
+        <ref name="positiveLength"/>
+        <ref name="positiveLength"/>
+    </list>
+</define>
+<define name="style-paragraph-properties-attlist" combine="interleave">
+    <ref name="common-padding-attlist"/>
+</define>
+
+<define name="common-padding-attlist">
+    <optional>
+        <attribute name="fo:padding">
+            <ref name="nonNegativeLength"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="fo:padding-top">
+            <ref name="nonNegativeLength"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="fo:padding-bottom">
+            <ref name="nonNegativeLength"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="fo:padding-left">
+            <ref name="nonNegativeLength"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="fo:padding-right">
+            <ref name="nonNegativeLength"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-paragraph-properties-attlist" combine="interleave">
+    <ref name="common-shadow-attlist"/>
+</define>
+
+<define name="common-shadow-attlist">
+    <optional>
+        <attribute name="style:shadow">
+            <ref name="shadowType"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-paragraph-properties-attlist" combine="interleave">
+    <ref name="common-keep-with-next-attlist"/>
+</define>
+
+<define name="common-keep-with-next-attlist">
+    <optional>
+        <attribute name="fo:keep-with-next">
+            <choice>
+                <value>auto</value>
+                <value>always</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-paragraph-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="text:number-lines" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-paragraph-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="text:line-number">
+            <ref name="nonNegativeInteger"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-paragraph-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:text-autospace">
+            <choice>
+                <value>none</value>
+                <value>ideograph-alpha</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-paragraph-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:punctuation-wrap">
+            <choice>
+                <value>simple</value>
+                <value>hanging</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-paragraph-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:line-break">
+            <choice>
+                <value>normal</value>
+                <value>strict</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-paragraph-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:vertical-align" a:defaultValue="auto">
+            <choice>
+                <value>top</value>
+                <value>middle</value>
+                <value>bottom</value>
+                <value>auto</value>
+                <value>baseline</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-paragraph-properties-attlist" combine="interleave">
+    <ref name="common-writing-mode-attlist"/>
+</define>
+
+<define name="common-writing-mode-attlist">
+    <optional>
+        <attribute name="style:writing-mode">
+            <choice>
+                <value>lr-tb</value>
+                <value>rl-tb</value>
+                <value>tb-rl</value>
+                <value>tb-lr</value>
+                <value>lr</value>
+                <value>rl</value>
+                <value>tb</value>
+                <value>page</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-paragraph-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:writing-mode-automatic">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-paragraph-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:snap-to-layout-grid">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-paragraph-properties-attlist" combine="interleave">
+    <ref name="common-page-number-attlist"/>
+</define>
+
+<define name="common-page-number-attlist">
+    <optional>
+        <attribute name="style:page-number">
+            <choice>                <ref name="positiveInteger"/>                <value>auto</value>            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-paragraph-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:background-transparency">
+            <ref name="percent"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-ruby-properties">
+    <element name="style:ruby-properties">
+        <ref name="style-ruby-properties-content"/>
+    </element>
+</define>
+
+<define name="style-ruby-properties-content">
+    <ref name="style-properties-content"/>
+</define>
+
+<define name="style-ruby-properties-content-strict">
+    <ref name="style-ruby-properties-attlist"/>
+    <ref name="style-ruby-properties-elements"/>
+</define>
+
+<define name="style-ruby-properties-elements">
+    <empty/>
+</define>
+<define name="style-ruby-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:ruby-position">
+            <choice>
+                <value>above</value>
+                <value>below</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-ruby-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:ruby-align">
+            <choice>
+                <value>left</value>
+                <value>center</value>
+                <value>right</value>
+                <value>distribute-letter</value>
+                <value>distribute-space</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-section-properties">
+    <element name="style:section-properties">
+        <ref name="style-section-properties-content"/>
+    </element>
+</define>
+
+<define name="style-section-properties-content">
+    <ref name="style-properties-content"/>
+</define>
+
+<define name="style-section-properties-content-strict">
+    <ref name="style-section-properties-attlist"/>
+    <ref name="style-section-properties-elements"/>
+</define>
+<define name="style-section-properties-attlist" combine="interleave">
+    <ref name="common-background-color-attlist"/>
+</define>
+<define name="style-section-properties-elements" combine="interleave">
+    <ref name="style-background-image"/>
+</define>
+<define name="style-section-properties-attlist" combine="interleave">
+    <ref name="common-horizontal-margin-attlist"/>
+</define>
+<define name="style-section-properties-elements" combine="interleave">
+    <ref name="style-columns"/>
+</define>
+
+<define name="style-columns">
+    <optional>
+        <element name="style:columns">
+            <ref name="style-columns-attlist"/>
+            <optional>
+                <ref name="style-column-sep"/>
+            </optional>
+            <zeroOrMore>
+                <ref name="style-column"/>
+            </zeroOrMore>
+        </element>
+    </optional>
+</define>
+<define name="style-columns-attlist" combine="interleave">
+    <attribute name="fo:column-count">
+        <ref name="positiveInteger"/>
+    </attribute>
+</define>
+<define name="style-columns-attlist" combine="interleave">
+    <optional>
+        <attribute name="fo:column-gap">
+            <ref name="length"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-column">
+    <element name="style:column">
+        <ref name="style-column-attlist"/>
+    </element>
+</define>
+<define name="style-column-attlist" combine="interleave">
+    <attribute name="style:rel-width">
+        <ref name="relativeLength"/>
+    </attribute>
+</define>
+<define name="style-column-attlist" combine="interleave">
+    <optional>
+        <attribute name="fo:start-indent" a:defaultValue="0cm">
+            <ref name="length"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-column-attlist" combine="interleave">
+    <optional>
+        <attribute name="fo:end-indent" a:defaultValue="0cm">
+            <ref name="length"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-column-attlist" combine="interleave">
+    <optional>
+        <attribute name="fo:space-before" a:defaultValue="0cm">
+            <ref name="length"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-column-attlist" combine="interleave">
+    <optional>
+        <attribute name="fo:space-after" a:defaultValue="0cm">
+            <ref name="length"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-column-sep">
+    <element name="style:column-sep">
+        <ref name="style-column-sep-attlist"/>
+    </element>
+</define>
+<define name="style-column-sep-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:style" a:defaultValue="solid">
+            <choice>
+                <value>none</value>
+                <value>solid</value>
+                <value>dotted</value>
+                <value>dashed</value>
+                <value>dot-dashed</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-column-sep-attlist" combine="interleave">
+    <attribute name="style:width">
+        <ref name="length"/>
+    </attribute>
+</define>
+<define name="style-column-sep-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:height" a:defaultValue="100%">
+            <ref name="percent"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-column-sep-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:vertical-align" a:defaultValue="top">
+            <choice>
+                <value>top</value>
+                <value>middle</value>
+                <value>bottom</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-column-sep-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:color" a:defaultValue="#000000">
+            <ref name="color"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-section-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:protect" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-section-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="text:dont-balance-text-columns">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-section-properties-attlist" combine="interleave">
+    <ref name="common-writing-mode-attlist"/>
+</define>
+<define name="style-section-properties-elements" combine="interleave">
+    <zeroOrMore>
+        <ref name="text-notes-configuration"/>
+    </zeroOrMore>
+</define>
+<define name="style-table-properties">
+    <element name="style:table-properties">
+        <ref name="style-table-properties-content"/>
+    </element>
+</define>
+
+<define name="style-table-properties-content">
+    <ref name="style-properties-content"/>
+</define>
+
+<define name="style-table-properties-content-strict">
+    <ref name="style-table-properties-attlist"/>
+    <ref name="style-table-properties-elements"/>
+</define>
+<define name="style-table-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:width">
+            <ref name="positiveLength"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="style:rel-width">
+            <ref name="percent"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-table-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:align">
+            <choice>
+                <value>left</value>
+                <value>center</value>
+                <value>right</value>
+                <value>margins</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-table-properties-attlist" combine="interleave">
+    <ref name="common-horizontal-margin-attlist"/>
+</define>
+<define name="style-table-properties-attlist" combine="interleave">
+    <ref name="common-vertical-margin-attlist"/>
+</define>
+<define name="style-table-properties-attlist" combine="interleave">
+    <ref name="common-margin-attlist"/>
+</define>
+<define name="style-table-properties-attlist" combine="interleave">
+    <ref name="common-page-number-attlist"/>
+</define>
+<define name="style-table-properties-attlist" combine="interleave">
+    <ref name="common-break-attlist"/>
+</define>
+<define name="style-table-properties-attlist" combine="interleave">
+    <ref name="common-background-color-attlist"/>
+</define>
+<define name="style-table-properties-elements" combine="interleave">
+    <ref name="style-background-image"/>
+</define>
+<define name="style-table-properties-attlist" combine="interleave">
+    <ref name="common-shadow-attlist"/>
+</define>
+<define name="style-table-properties-attlist" combine="interleave">
+    <ref name="common-keep-with-next-attlist"/>
+</define>
+<define name="style-table-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:may-break-between-rows">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-table-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:border-model">
+            <choice>
+                <value>collapsing</value>
+                <value>separating</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-table-properties-attlist" combine="interleave">
+    <ref name="common-writing-mode-attlist"/>
+</define>
+<define name="style-table-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="table:display">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-table-column-properties">
+    <element name="style:table-column-properties">
+        <ref name="style-table-column-properties-content"/>
+    </element>
+</define>
+
+<define name="style-table-column-properties-content">
+    <ref name="style-properties-content"/>
+</define>
+
+<define name="style-table-column-properties-content-strict">
+    <ref name="style-table-column-properties-attlist"/>
+    <ref name="style-table-column-properties-elements"/>
+</define>
+
+<define name="style-table-column-properties-elements">
+    <empty/>
+</define>
+<define name="style-table-column-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:column-width">
+            <ref name="positiveLength"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="style:rel-column-width">
+            <ref name="relativeLength"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-table-column-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:use-optimal-column-width">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-table-column-properties-attlist" combine="interleave">
+    <ref name="common-break-attlist"/>
+</define>
+<define name="style-table-row-properties">
+    <element name="style:table-row-properties">
+        <ref name="style-table-row-properties-content"/>
+    </element>
+</define>
+
+<define name="style-table-row-properties-content">
+    <ref name="style-properties-content"/>
+</define>
+
+<define name="style-table-row-properties-content-strict">
+    <ref name="style-table-row-properties-attlist"/>
+    <ref name="style-table-row-properties-elements"/>
+</define>
+<define name="style-table-row-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:row-height">
+            <ref name="positiveLength"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="style:min-row-height">
+            <ref name="nonNegativeLength"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-table-row-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:use-optimal-row-height">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-table-row-properties-attlist" combine="interleave">
+    <ref name="common-background-color-attlist"/>
+</define>
+<define name="style-table-row-properties-elements" combine="interleave">
+    <ref name="style-background-image"/>
+</define>
+<define name="style-table-row-properties-attlist" combine="interleave">
+    <ref name="common-break-attlist"/>
+</define>
+<define name="style-table-row-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="fo:keep-together">
+            <choice>
+                <value>auto</value>
+                <value>always</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-table-cell-properties">
+    <element name="style:table-cell-properties">
+        <ref name="style-table-cell-properties-content"/>
+    </element>
+</define>
+
+<define name="style-table-cell-properties-content">
+    <ref name="style-properties-content"/>
+</define>
+
+<define name="style-table-cell-properties-content-strict">
+    <ref name="style-table-cell-properties-attlist"/>
+    <ref name="style-table-cell-properties-elements"/>
+</define>
+<define name="style-table-cell-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:vertical-align">
+            <choice>
+                <value>top</value>
+                <value>middle</value>
+                <value>bottom</value>
+                <value>automatic</value>
+            </choice>
+            </attribute>
+    </optional>
+</define>
+<define name="style-table-cell-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:text-align-source">
+            <choice>
+                <value>fix</value>
+                <value>value-type</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-table-cell-properties-attlist" combine="interleave">
+    <ref name="common-style-direction-attlist"/>
+</define>
+
+<define name="common-style-direction-attlist">
+    <optional>
+        <attribute name="style:direction">
+            <choice>
+                <value>ltr</value>
+                <value>ttb</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-table-cell-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:glyph-orientation-vertical">
+            <choice>
+                <value>auto</value>
+                <value>0</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-table-cell-properties-attlist" combine="interleave">
+    <ref name="common-shadow-attlist"/>
+</define>
+<define name="style-table-cell-properties-attlist" combine="interleave">
+    <ref name="common-background-color-attlist"/>
+</define>
+<define name="style-table-cell-properties-elements" combine="interleave">
+    <ref name="style-background-image"/>
+</define>
+<define name="style-table-cell-properties-attlist" combine="interleave">
+    <ref name="common-border-attlist"/>
+</define>
+<define name="style-table-cell-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:diagonal-tl-br">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="style:diagonal-tl-br-widths">
+            <ref name="borderWidths"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="style:diagonal-bl-tr">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="style:diagonal-bl-tr-widths">
+            <ref name="borderWidths"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-table-cell-properties-attlist" combine="interleave">
+    <ref name="common-border-line-width-attlist"/>
+</define>
+<define name="style-table-cell-properties-attlist" combine="interleave">
+    <ref name="common-padding-attlist"/>
+</define>
+<define name="style-table-cell-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="fo:wrap-option">
+            <choice>
+                <value>no-wrap</value>
+                <value>wrap</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-table-cell-properties-attlist" combine="interleave">
+    <ref name="common-rotation-angle-attlist"/>
+</define>
+
+<define name="common-rotation-angle-attlist">
+    <optional>
+        <attribute name="style:rotation-angle">
+            <ref name="nonNegativeInteger"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-table-cell-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:rotation-align">
+            <choice>
+                <value>none</value>
+                <value>bottom</value>
+                <value>top</value>
+                <value>center</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-table-cell-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:cell-protect">
+            <choice>
+                <value>none</value>
+                <value>hidden-and-protected</value>
+                <list>
+                    <oneOrMore>
+                        <choice>
+                            <value>protected</value>
+                            <value>formula-hidden</value>
+                        </choice>
+                    </oneOrMore>
+                </list>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-table-cell-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:print-content">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-table-cell-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:decimal-places">
+            <ref name="nonNegativeInteger"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-table-cell-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:repeat-content">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-table-cell-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:shrink-to-fit">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-list-level-properties">
+    <element name="style:list-level-properties">
+        <ref name="style-list-level-properties-content"/>
+    </element>
+</define>
+
+<define name="style-list-level-properties-content">
+    <ref name="style-properties-content"/>
+</define>
+
+<define name="style-list-level-properties-content-strict">
+    <ref name="style-list-level-properties-attlist"/>
+    <ref name="style-list-level-properties-elements"/>
+</define>
+
+<define name="style-list-level-properties-elements">
+    <empty/>
+</define>
+<define name="style-list-level-properties-attlist" combine="interleave">
+    <ref name="common-text-align"/>
+</define>
+<define name="style-list-level-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="text:space-before">
+            <ref name="nonNegativeLength"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-list-level-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="text:min-label-width">
+            <ref name="nonNegativeLength"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-list-level-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="text:min-label-distance">
+            <ref name="nonNegativeLength"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-list-level-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:font-name">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-list-level-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="fo:width">
+            <ref name="positiveLength"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="fo:height">
+            <ref name="positiveLength"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-list-level-properties-attlist" combine="interleave">
+    <ref name="common-vertical-rel-attlist"/>
+    <ref name="common-vertical-pos-attlist"/>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:stroke">
+            <choice>
+                <value>none</value>
+                <value>dash</value>
+                <value>solid</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:stroke-dash">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:stroke-dash-names">
+            <ref name="styleNameRefs"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="svg:stroke-width">
+            <ref name="length"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="svg:stroke-color">
+            <ref name="color"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:marker-start">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:marker-end">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:marker-start-width">
+            <ref name="length"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:marker-end-width">
+            <ref name="length"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:marker-start-center">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:marker-end-center">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="svg:stroke-opacity">
+            <choice>
+                <data type="double">
+                    <param name="minInclusive">0</param>
+                    <param name="maxInclusive">1</param>
+                </data>
+                <ref name="percent"/>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:stroke-linejoin">
+            <choice>
+                <value>miter</value>
+                <value>round</value>
+                <value>bevel</value>
+                <value>middle</value>
+                <value>none</value>
+                <value>inherit</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-fill-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:fill">
+            <choice>
+                <value>none</value>
+                <value>solid</value>
+                <value>bitmap</value>
+                <value>gradient</value>
+                <value>hatch</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-fill-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:fill-color">
+            <ref name="color"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-fill-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:secondary-fill-color">
+            <ref name="color"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-fill-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:fill-gradient-name">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-fill-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:gradient-step-count">
+            <ref name="nonNegativeInteger"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-fill-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:fill-hatch-name">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-fill-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:fill-hatch-solid">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-fill-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:fill-image-name">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-fill-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:repeat">
+            <choice>
+                <value>no-repeat</value>
+                <value>repeat</value>
+                <value>stretch</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-fill-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:fill-image-width">
+            <choice>
+                <ref name="length"/>
+                <ref name="percent"/>
+            </choice>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="draw:fill-image-height">
+            <choice>
+                <ref name="length"/>
+                <ref name="percent"/>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-fill-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:fill-image-ref-point-x">
+            <ref name="percent"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="draw:fill-image-ref-point-y">
+            <ref name="percent"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="draw:fill-image-ref-point">
+            <choice>
+                <value>top-left</value>
+                <value>top</value>
+                <value>top-right</value>
+                <value>left</value>
+                <value>center</value>
+                <value>right</value>
+                <value>bottom-left</value>
+                <value>bottom</value>
+                <value>bottom-right</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-fill-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:tile-repeat-offset"/>
+    </optional>
+</define>
+<define name="style-graphic-fill-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:opacity">
+            <ref name="percent"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-fill-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:opacity-name">
+            <ref name="styleNameRef"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-fill-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="svg:fill-rule">
+            <choice>
+                <value>nonzero</value>
+                <value>evenodd</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:symbol-color">
+            <ref name="color"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="text:animation">
+            <choice>
+                <value>none</value>
+                <value>scroll</value>
+                <value>alternate</value>
+                <value>slide</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="text:animation-direction">
+            <choice>
+                <value>left</value>
+                <value>right</value>
+                <value>up</value>
+                <value>down</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="text:animation-start-inside">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="text:animation-stop-inside">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="text:animation-repeat">
+            <ref name="nonNegativeInteger"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="text:animation-delay">
+            <ref name="duration"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="text:animation-steps">
+            <ref name="length"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:auto-grow-width">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="draw:auto-grow-height">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:fit-to-size">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:fit-to-contour">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:textarea-vertical-align">
+            <choice>
+                <value>top</value>
+                <value>middle</value>
+                <value>bottom</value>
+                <value>justify</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:textarea-horizontal-align">
+            <choice>
+                <value>left</value>
+                <value>center</value>
+                <value>right</value>
+                <value>justify</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="fo:wrap-option">
+            <choice>
+                <value>no-wrap</value>
+                <value>wrap</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-elements" combine="interleave">
+    <optional>
+        <ref name="text-list-style"/>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:color-mode">
+            <choice>
+                <value>greyscale</value>
+                <value>mono</value>
+                <value>watermark</value>
+                <value>standard</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:color-inversion">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:luminance">
+            <ref name="percent"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:contrast">
+            <ref name="percent"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:gamma">
+            <ref name="percent"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:red">
+            <ref name="percent"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:green">
+            <ref name="percent"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:blue">
+            <ref name="percent"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:image-opacity">
+            <ref name="percent"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:shadow">
+            <choice>
+                <value>visible</value>
+                <value>hidden</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:shadow-offset-x">
+            <ref name="length"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="draw:shadow-offset-y">
+            <ref name="length"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:shadow-color">
+            <ref name="color"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:shadow-opacity">
+            <ref name="percent"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:start-line-spacing-horizontal">
+            <ref name="distance"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="draw:start-line-spacing-vertical">
+            <ref name="distance"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:end-line-spacing-horizontal">
+            <ref name="distance"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="draw:end-line-spacing-vertical">
+            <ref name="distance"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:line-distance">
+            <ref name="distance"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:guide-overhang">
+            <ref name="length"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:guide-distance">
+            <ref name="distance"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:start-guide">
+            <ref name="length"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:end-guide">
+            <ref name="length"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:placing">
+            <choice>
+                <value>below</value>
+                <value>above</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:parallel">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:measure-align">
+            <choice>
+                <value>automatic</value>
+                <value>left-outside</value>
+                <value>inside</value>
+                <value>right-outside</value>
+            </choice>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="draw:measure-vertical-align">
+            <choice>
+                <value>automatic</value>
+                <value>above</value>
+                <value>below</value>
+                <value>center</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:unit">
+            <choice>
+                <value>automatic</value>
+                <value>mm</value>
+                <value>cm</value>
+                <value>m</value>
+                <value>km</value>
+                <value>pt</value>
+                <value>pc</value>
+                <value>inch</value>
+                <value>ft</value>
+                <value>mi</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:show-unit">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:decimal-places">
+            <ref name="nonNegativeInteger"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:caption-type">
+            <choice>
+                <value>straight-line</value>
+                <value>angled-line</value>
+                <value>angled-connector-line</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:caption-angle-type">
+            <choice>
+                <value>fixed</value>
+                <value>free</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:caption-angle">
+            <ref name="nonNegativeInteger"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:caption-gap">
+            <ref name="distance"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:caption-escape-direction">
+            <choice>
+                <value>horizontal</value>
+                <value>vertical</value>
+                <value>auto</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:caption-escape">
+            <choice>
+                <ref name="length"/>
+                <ref name="percent"/>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:caption-line-length">
+            <ref name="length"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:caption-fit-line-length">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="dr3d:horizontal-segments">
+            <ref name="nonNegativeInteger"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="dr3d:vertical-segments">
+            <ref name="nonNegativeInteger"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="dr3d:edge-rounding">
+            <ref name="percent"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="dr3d:edge-rounding-mode">
+            <choice>
+                <value>correct</value>
+                <value>attractive</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="dr3d:back-scale">
+            <ref name="percent"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="dr3d:depth">
+            <ref name="length"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="dr3d:backface-culling">
+            <choice>
+                <value>enabled</value>
+                <value>disabled</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="dr3d:end-angle">
+            <ref name="nonNegativeInteger"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="dr3d:close-front">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="dr3d:close-back">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="dr3d:lighting-mode">
+            <choice>
+                <value>standard</value>
+                <value>double-sided</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="dr3d:normals-kind">
+            <choice>
+                <value>object</value>
+                <value>flat</value>
+                <value>sphere</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="dr3d:normals-direction">
+            <choice>
+                <value>normal</value>
+                <value>inverse</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="dr3d:texture-generation-mode-x">
+            <choice>
+                <value>object</value>
+                <value>parallel</value>
+                <value>sphere</value>
+            </choice>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="dr3d:texture-generation-mode-y">
+            <choice>
+                <value>object</value>
+                <value>parallel</value>
+                <value>sphere</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="dr3d:texture-kind">
+            <choice>
+                <value>luminance</value>
+                <value>intensity</value>
+                <value>color</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="dr3d:texture-filter">
+            <choice>
+                <value>enabled</value>
+                <value>disabled</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="dr3d:texture-mode">
+            <choice>
+                <value>replace</value>
+                <value>modulate</value>
+                <value>blend</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="dr3d:ambient-color">
+            <ref name="color"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="dr3d:emissive-color">
+            <ref name="color"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="dr3d:specular-color">
+            <ref name="color"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="dr3d:diffuse-color">
+            <ref name="color"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="dr3d:shininess">
+            <ref name="percent"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="dr3d:shadow">
+            <choice>
+                <value>visible</value>
+                <value>hidden</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <ref name="common-draw-rel-size-attlist"/>
+    <optional>
+        <attribute name="fo:min-width">
+            <choice>
+                <ref name="length"/>
+                <ref name="percent"/>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="fo:min-height">
+            <choice>
+                <ref name="length"/>
+                <ref name="percent"/>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="fo:max-height">
+            <choice>
+                <ref name="length"/>
+                <ref name="percent"/>
+            </choice>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="fo:max-width">
+            <choice>
+                <ref name="length"/>
+                <ref name="percent"/>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <ref name="common-horizontal-margin-attlist"/>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <ref name="common-vertical-margin-attlist"/>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <ref name="common-margin-attlist"/>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:print-content">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:protect">
+            <choice>
+                <value>none</value>
+                <list>
+                    <oneOrMore>
+                        <choice>
+                            <value>content</value>
+                            <value>position</value>
+                            <value>size</value>
+                        </choice>
+                    </oneOrMore>
+                </list>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:horizontal-pos">
+            <choice>
+                <value>left</value>
+                <value>center</value>
+                <value>right</value>
+                <value>from-left</value>
+                <value>inside</value>
+                <value>outside</value>
+                <value>from-inside</value>
+            </choice>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="svg:x">
+            <ref name="coordinate"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:horizontal-rel">
+            <choice>
+                    <value>page</value>
+                <value>page-content</value>
+                <value>page-start-margin</value>
+                <value>page-end-margin</value>
+                <value>frame</value>
+                <value>frame-content</value>
+                <value>frame-start-margin</value>
+                <value>frame-end-margin</value>
+                <value>paragraph</value>
+                <value>paragraph-content</value>
+                <value>paragraph-start-margin</value>
+                <value>paragraph-end-margin</value>
+                <value>char</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <ref name="common-vertical-pos-attlist"/>
+</define>
+
+<define name="common-vertical-pos-attlist">
+    <optional>
+        <attribute name="style:vertical-pos">
+            <choice>
+                <value>top</value>
+                <value>middle</value>
+                <value>bottom</value>
+                <value>from-top</value>
+                <value>below</value>
+            </choice>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="svg:y">
+            <ref name="coordinate"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <ref name="common-vertical-rel-attlist"/>
+</define>
+
+<define name="common-vertical-rel-attlist">
+    <optional>
+        <attribute name="style:vertical-rel">
+            <choice>
+                <value>page</value>
+                <value>page-content</value>
+                <value>frame</value>
+                <value>frame-content</value>
+                <value>paragraph</value>
+                <value>paragraph-content</value>
+                <value>char</value>
+                <value>line</value>
+                <value>baseline</value>
+                <value>text</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <ref name="common-text-anchor-attlist"/>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <ref name="common-border-attlist"/>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <ref name="common-border-line-width-attlist"/>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <ref name="common-padding-attlist"/>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <ref name="common-shadow-attlist"/>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <ref name="common-background-color-attlist"/>
+</define>
+<define name="style-graphic-properties-elements" combine="interleave">
+    <ref name="style-background-image"/>
+</define>
+<define name="style-graphic-properties-elements" combine="interleave">
+    <ref name="style-columns"/>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:editable">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:wrap">
+            <choice>
+                <value>none</value>
+                <value>left</value>
+                <value>right</value>
+                <value>parallel</value>
+                <value>dynamic</value>
+                <value>run-through</value>
+                <value>biggest</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:wrap-dynamic-threshold">
+            <ref name="nonNegativeLength"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:number-wrapped-paragraphs">
+            <choice>
+                <value>no-limit</value>
+                <ref name="positiveInteger"/>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:wrap-contour">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:wrap-contour-mode">
+            <choice>
+                <value>full</value>
+                <value>outside</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:run-through">
+            <choice>
+                <value>foreground</value>
+                <value>background</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:flow-with-text">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:overflow-behavior">
+            <choice>
+                <value>clip</value>
+                <value>auto-create-new-frame</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="style:mirror">
+            <choice>
+                <value>none</value>
+                <value>vertical</value>
+                <ref name="horizontal-mirror"/>
+                <list>
+                    <value>vertical</value>
+                    <ref name="horizontal-mirror"/>
+                </list>
+                <list>
+                    <ref name="horizontal-mirror"/>
+                    <value>vertical</value>
+                </list>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+
+<define name="horizontal-mirror">
+    <choice>
+        <value>horizontal</value>
+        <value>horizontal-on-odd</value>
+        <value>horizontal-on-even</value>
+    </choice>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="fo:clip">
+            <!-- The attribute value must match the one XSL's clip -->
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:wrap-influence-on-position"
+                    a:defaultValue="iterative">
+            <choice>
+                <value>iterative</value>
+                <value>once-concurrent</value>
+                <value>once-successive</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <ref name="common-writing-mode-attlist"/>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:frame-display-scrollbar">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:frame-display-border">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:frame-margin-horizontal">
+            <ref name="nonNegativePixelLength"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="draw:frame-margin-vertical">
+            <ref name="nonNegativePixelLength"/>
+        </attribute>
+    </optional>
+</define>
+
+<define name="nonNegativePixelLength">
+    <data type="string">
+        <param name="pattern">([0-9]+(\.[0-9]*)?|\.[0-9]+)(px)</param>
+    </data>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:visible-area-left">
+            <ref name="nonNegativeLength"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="draw:visible-area-top">
+            <ref name="nonNegativeLength"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="draw:visible-area-width">
+            <ref name="positiveLength"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="draw:visible-area-height">
+            <ref name="positiveLength"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-graphic-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="draw:ole-draw-aspect">
+            <ref name="nonNegativeInteger"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-chart-properties">
+    <element name="style:chart-properties">
+        <ref name="style-chart-properties-content"/>
+    </element>
+</define>
+
+<define name="style-chart-properties-content">
+    <ref name="style-properties-content"/>
+</define>
+
+<define name="style-chart-properties-content-strict">
+    <ref name="style-chart-properties-attlist"/>
+    <ref name="style-chart-properties-elements"/>
+</define>
+
+<define name="style-chart-properties-elements">
+    <empty/>
+</define>
+<define name="style-chart-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="chart:scale-text" a:defaultValue="true">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-chart-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="chart:three-dimensional">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-chart-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="chart:deep">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-chart-properties-attlist" combine="interleave">
+    <choice>
+        <attribute name="chart:symbol-type">
+            <value>none</value>
+        </attribute>
+        <attribute name="chart:symbol-type">
+            <value>automatic</value>
+        </attribute>
+        <group>
+            <attribute name="chart:symbol-type">
+                <value>named-symbol</value>
+            </attribute>
+            <attribute name="chart:symbol-name">
+                <choice>
+                    <value>square</value>
+                    <value>diamond</value>
+                    <value>arrow-down</value>
+                    <value>arrow-up</value>
+                    <value>arrow-right</value>
+                    <value>arrow-left</value>
+                    <value>bow-tie</value>
+                    <value>hourglass</value>
+                    <value>circle</value>
+                    <value>star</value>
+                    <value>x</value>
+                    <value>plus</value>
+                    <value>asterisk</value>
+                    <value>horizontal-bar</value>
+                    <value>vertical-bar</value>
+                </choice>
+            </attribute>
+        </group>
+        <group>
+            <attribute name="chart:symbol-type">
+                <value>image</value>
+            </attribute>
+            <element name="chart:symbol-image">
+                <attribute name="xlink:href">
+                    <ref name="anyURI"/>
+                </attribute>
+            </element>
+        </group>
+        <empty/>
+    </choice>
+</define>
+<define name="style-chart-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="chart:symbol-width">
+            <ref name="nonNegativeLength"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="chart:symbol-height">
+            <ref name="nonNegativeLength"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-chart-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="chart:vertical" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-chart-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="chart:connect-bars" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-chart-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="chart:gap-width">
+            <ref name="integer"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="chart:overlap">
+            <ref name="integer"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-chart-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="chart:japanese-candle-stick"
+                    a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-chart-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="chart:interpolation" a:defaultValue="none">
+            <choice>
+                <value>none</value>
+                <value>cubic-spline</value>
+                <value>b-spline</value>
+            </choice>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="chart:spline-order" a:defaultValue="2">
+            <ref name="positiveInteger"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="chart:spline-resolution" a:defaultValue="20">
+            <ref name="positiveInteger"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-chart-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="chart:pie-offset" a:defaultValue="0">
+            <ref name="nonNegativeInteger"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-chart-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="chart:lines" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-chart-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="chart:solid-type" a:defaultValue="cuboid">
+            <choice>
+                <value>cuboid</value>
+                <value>cylinder</value>
+                <value>cone</value>
+                <value>pyramid</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-chart-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="chart:stacked" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="chart:percentage" a:defaultValue="false">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-chart-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="chart:link-data-style-to-source">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-chart-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="chart:visible">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-chart-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="chart:logarithmic">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-chart-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="chart:maximum">
+            <ref name="double"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="chart:minimum">
+            <ref name="double"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="chart:origin">
+            <ref name="double"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="chart:interval-major">
+            <ref name="double"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="chart:interval-minor-divisor">
+            <ref name="positiveInteger"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-chart-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="chart:tick-marks-major-inner">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="chart:tick-marks-major-outer">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="chart:tick-marks-minor-inner">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="chart:tick-marks-minor-outer">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-chart-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="chart:display-label">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="chart:text-overlap">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="text:line-break">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="chart:label-arrangement"
+                   a:defaultValue="side-by-side">
+            <choice>
+                <value>side-by-side</value>
+                <value>stagger-even</value>
+                <value>stagger-odd</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-chart-properties-attlist" combine="interleave">
+    <ref name="common-style-direction-attlist"/>
+</define>
+<define name="style-chart-properties-attlist" combine="interleave">
+    <ref name="common-rotation-angle-attlist"/>
+</define>
+<define name="style-chart-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="chart:data-label-number">
+            <choice>
+                <value>none</value>
+                <value>value</value>
+                <value>percentage</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-chart-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="chart:data-label-text">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-chart-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="chart:data-label-symbol">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-chart-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="chart:mean-value">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-chart-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="chart:error-category" a:defaultValue="none">
+            <choice>
+                <value>none</value>
+                <value>variance</value>
+                <value>standard-deviation</value>
+                <value>percentage</value>
+                <value>error-margin</value>
+                <value>constant</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-chart-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="chart:error-percentage">
+            <ref name="double"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-chart-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="chart:error-margin">
+            <ref name="double"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-chart-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="chart:error-lower-limit">
+            <ref name="double"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="chart:error-upper-limit">
+            <ref name="double"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-chart-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="chart:error-upper-indicator">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+    <optional>
+        <attribute name="chart:error-lower-indicator">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-chart-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="chart:series-source" a:defaultValue="columns">
+            <choice>
+                <value>columns</value>
+                <value>rows</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-chart-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="chart:regression-type" a:defaultValue="none">
+            <choice>
+                <value>none</value>
+                <value>linear</value>
+                <value>logarithmic</value>
+                <value>exponential</value>
+                <value>power</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-drawing-page-properties-attlist"
+        combine="interleave">
+    <optional>
+        <attribute name="presentation:transition-type">
+            <choice>
+                <value>manual</value>
+                <value>automatic</value>
+                <value>semi-automatic</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-drawing-page-properties-attlist"
+         combine="interleave">
+    <optional>
+        <attribute name="presentation:transition-style">
+            <choice>
+                <value>none</value>
+                <value>fade-from-left</value>
+                <value>fade-from-top</value>
+                <value>fade-from-right</value>
+                <value>fade-from-bottom</value>
+                <value>fade-from-upperleft</value>
+                <value>fade-from-upperright</value>
+                <value>fade-from-lowerleft</value>
+                <value>fade-from-lowerright</value>
+                <value>move-from-left</value>
+                <value>move-from-top</value>
+                <value>move-from-right</value>
+                <value>move-from-bottom</value>
+                <value>move-from-upperleft</value>
+                <value>move-from-upperright</value>
+                <value>move-from-lowerleft</value>
+                <value>move-from-lowerright</value>
+                <value>uncover-to-left</value>
+                <value>uncover-to-top</value>
+                <value>uncover-to-right</value>    
+                <value>uncover-to-bottom</value>
+                <value>uncover-to-upperleft</value>
+                <value>uncover-to-upperright</value>
+                <value>uncover-to-lowerleft</value>
+                <value>uncover-to-lowerright</value>
+                <value>fade-to-center</value>
+                <value>fade-from-center</value>
+                <value>vertical-stripes</value>
+                <value>horizontal-stripes</value>
+                <value>clockwise</value>
+                <value>counterclockwise</value>
+                <value>open-vertical</value>
+                <value>open-horizontal</value>
+                <value>close-vertical</value>
+                <value>close-horizontal</value>
+                <value>wavyline-from-left</value>
+                <value>wavyline-from-top</value>
+                <value>wavyline-from-right</value>
+                <value>wavyline-from-bottom</value>
+                <value>spiralin-left</value>
+                <value>spiralin-right</value>
+                <value>spiralout-left</value>
+                <value>spiralout-right</value>
+                <value>roll-from-top</value>
+                <value>roll-from-left</value>
+                <value>roll-from-right</value>
+                <value>roll-from-bottom</value>
+                <value>stretch-from-left</value>
+                <value>stretch-from-top</value>
+                <value>stretch-from-right</value>
+                <value>stretch-from-bottom</value>
+
+                <value>vertical-lines</value>
+                <value>horizontal-lines</value>
+                <value>dissolve</value>
+                <value>random</value>
+                <value>vertical-checkerboard</value>
+                <value>horizontal-checkerboard</value>
+                <value>interlocking-horizontal-left</value>
+                <value>interlocking-horizontal-right</value>
+                <value>interlocking-vertical-top</value>
+                <value>interlocking-vertical-bottom</value>
+                <value>fly-away</value>
+                <value>open</value>
+                <value>close</value>
+                <value>melt</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-drawing-page-properties-attlist"
+        combine="interleave">
+    <optional>
+        <attribute name="presentation:transition-speed">
+            <ref name="presentationSpeeds"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-drawing-page-properties-attlist " combine="interleave">
+    <optional>
+        <attribute name="smil:type">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-drawing-page-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="smil:subtype">
+            <ref name="string"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-drawing-page-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="smil:direction" a:defaultValue="forward">
+            <choice>
+                <value>forward</value>
+                <value>reverse</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-drawing-page-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="smil:fadeColor">
+            <ref name="color"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-drawing-page-properties-attlist"
+        combine="interleave">
+    <optional>
+        <attribute name="presentation:duration">
+            <ref name="duration"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-drawing-page-properties-attlist"
+         combine="interleave">
+    <optional>
+        <attribute name="presentation:visibility">
+            <choice>
+                <value>visible</value>
+                <value>hidden</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-drawing-page-properties-elements"
+         combine="interleave">
+    <optional>
+        <ref name="presentation-sound"/>
+    </optional>
+</define>
+<define name="style-drawing-page-properties-attlist"
+         combine="interleave">
+    <optional>
+        <attribute name="draw:background-size">
+            <choice>
+                <value>full</value>
+                <value>border</value>
+            </choice>
+        </attribute>
+    </optional>
+</define>
+<define name="style-drawing-page-properties-attlist"
+         combine="interleave">
+    <optional>
+        <attribute name="presentation:background-objects-visible">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-drawing-page-properties-attlist"
+         combine="interleave">
+    <optional>
+        <attribute name="presentation:background-visible">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-drawing-page-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="presentation:display-header">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-drawing-page-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="presentation:display-footer">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-drawing-page-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="presentation:display-page-number">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="style-drawing-page-properties-attlist" combine="interleave">
+    <optional>
+        <attribute name="presentation:display-date-time">
+            <ref name="boolean"/>
+        </attribute>
+    </optional>
+</define>
+<define name="string">
+    <data type="string"/>
+</define>
+<define name="date">
+    <data type="date"/>
+</define>
+<define name="time">
+    <data type="time"/>
+</define>
+<define name="dateTime">
+    <data type="dateTime"/>
+</define>
+<define name="duration">
+    <data type="duration"/>
+</define>
+<define name="integer">
+    <data type="integer"/>
+</define>
+<define name="nonNegativeInteger">
+    <data type="nonNegativeInteger"/>
+</define>
+<define name="positiveInteger">
+    <data type="positiveInteger"/>
+</define>
+<define name="double">
+    <data type="double"/>
+</define>
+<define name="anyURI">
+    <data type="anyURI"/>
+</define>
+<define name="base64Binary">
+    <data type="base64Binary"/>
+</define>
+<define name="ID">
+    <data type="ID"/>
+</define>
+<define name="IDREF">
+    <data type="IDREF"/>
+</define>
+<define name="IDREFS">
+    <data type="IDREFS"/>
+</define>
+<define name="boolean">
+    <choice>
+        <value>true</value>
+        <value>false</value>
+    </choice>
+</define>
+<define name="dateOrDateTime">
+    <choice>
+        <data type="date"/>
+        <data type="dateTime"/>
+    </choice>
+</define>
+<define name="timeOrDateTime">
+    <choice>
+        <data type="time"/>
+        <data type="dateTime"/>
+    </choice>
+</define>
+<define name="language">
+    <data type="language"/>
+</define>
+<define name="countryCode">
+    <data type="token">
+        <param name="pattern">[A-Za-z0-9]{1,8}</param>
+    </data>
+</define>
+<define name="languageCode">
+    <data type="token">
+        <param name="pattern">[A-Za-z]{1,8}</param>
+    </data>
+</define>
+<define name="character">
+    <data type="string">
+        <param name="length">1</param>
+    </data>
+</define>
+<define name="length">
+    <data type="string">
+        <param name="pattern">-?([0-9]+(\.[0-9]*)?|\.[0-9]+)((cm)|(mm)|(in)|(pt)|(pc)|(px))</param>
+
+    </data>
+</define>
+<define name="nonNegativeLength">
+    <data type="string">
+        <param name="pattern">([0-9]+(\.[0-9]*)?|\.[0-9]+)((cm)|(mm)|(in)|(pt)|(pc)|(px))</param>
+
+    </data>
+</define>
+<define name="positiveLength">
+    <data type="string">
+        <param name="pattern">([0-9]*[1-9][0-9]*(\.[0-9]*)?|0+\.[0-9]*[1-9][0-9]*|\.[0-9]*[1-9][0-9]*)((cm)|(mm)|(in)|(pt)|(pc)|(px))</param>
+
+    </data>
+</define>
+<define name="percent">
+    <data type="string">
+        <param name="pattern">-?([0-9]+(\.[0-9]*)?|\.[0-9]+)%</param>
+    </data>
+</define>
+<define name="relativeLength">
+    <data type="string">
+        <param name="pattern">[0-9]+\*</param>
+    </data>
+</define>
+<define name="coordinate">
+    <ref name="length"/>
+</define>
+<define name="distance">
+    <ref name="length"/>
+</define>
+<define name="color">
+    <data type="string">
+        <param name="pattern">#[0-9a-fA-F]{6}</param>
+    </data>
+</define>
+<define name="styleName">
+    <data type="NCName"/>
+</define>
+<define name="styleNameRef">
+    <choice>
+        <data type="NCName"/>
+        <empty/>
+    </choice>
+</define>
+<define name="styleNameRefs">
+    <list>
+        <zeroOrMore>
+            <data type="NCName"/>
+        </zeroOrMore>
+    </list>
+</define>
+<define name="variableName">
+    <data type="string"/>
+</define>
+<define name="formula">
+    <!-- A formula should start with a namespace prefix, -->
+    <!-- but has no restrictions-->
+    <data type="string"/>
+</define>
+
+<define name="targetFrameName">
+    <choice>
+        <value>_self</value>
+        <value>_blank</value>
+        <value>_parent</value>
+        <value>_top</value>
+        <ref name="string"/>
+    </choice>
+</define>
+
+<define name="valueType">
+    <choice>
+        <value>float</value>
+        <value>time</value>
+        <value>date</value>
+        <value>percentage</value>
+        <value>currency</value>
+        <value>boolean</value>
+        <value>string</value>
+    </choice>
+</define>
+
+<define name="points">
+    <data type="string">
+        <param name="pattern">-?[0-9]+,-?[0-9]+([ ]+-?[0-9]+,-?[0-9]+)*</param>
+    </data>
+</define>
+<define name="pathData">
+    <data type="string"/>
+</define>
+
+<define name="vector3D">
+    <data type="string">
+        <param name="pattern">\([ ]*-?([0-9]+(\.[0-9]*)?|\.[0-9]+)([ ]+-?([0-9]+(\.[0-9]*)?|\.[0-9]+)){2}[ ]*\)</param>
+
+    </data>
+</define>
+
+<define name="namespacedToken">
+    <data type="string">
+        <param name="pattern">[0-9a-zA-Z_]+:[0-9a-zA-Z._\-]+</param>
+    </data>
+</define>
+<define name="anyAttListOrElements">
+    <zeroOrMore>
+        <attribute>
+            <anyName/>
+            <text/>
+        </attribute>
+    </zeroOrMore>
+    <ref name="anyElements"/>
+</define>
+<define name="anyElements">
+    <zeroOrMore>
+        <element>
+            <anyName/>
+            <mixed>
+                <ref name="anyAttListOrElements"/>
+            </mixed>
+        </element>
+    </zeroOrMore>
+</define>
+</grammar>
diff --git a/validator/src/main/resources/schema/odf1.1/OpenDocument-strict-schema-v1.1.rng b/validator/src/main/resources/schema/odf1.1/OpenDocument-strict-schema-v1.1.rng
new file mode 100644
index 0000000..e77fe4b
--- /dev/null
+++ b/validator/src/main/resources/schema/odf1.1/OpenDocument-strict-schema-v1.1.rng
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    OASIS OpenDocument v1.1
+    OASIS Standard, 1 Feb 2007
+    Strict Relax-NG Schema
+
+    $Id$
+
+    © 2002-2007 OASIS Open
+    © 1999-2007 Sun Microsystems, Inc.
+-->
+
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+    <include href="OpenDocument-schema-v1.1.rng">
+        <define name="office-meta-content">
+            <ref name="office-meta-content-strict"/>
+        </define>
+        <define name="style-page-layout-properties-content">
+            <ref name="style-page-layout-properties-content-strict"/>
+        </define>
+        <define name="style-header-footer-properties-content">
+            <ref name="style-header-footer-properties-content-strict"/>
+        </define>
+        <define name="style-drawing-page-properties-content">
+            <ref name="style-drawing-page-properties-content-strict"/>
+        </define>
+        <define name="style-text-properties-content">
+            <ref name="style-text-properties-content-strict"/>
+        </define>
+        <define name="style-paragraph-properties-content">
+            <ref name="style-paragraph-properties-content-strict"/>
+        </define>
+        <define name="style-ruby-properties-content">
+            <ref name="style-ruby-properties-content-strict"/>
+        </define>
+        <define name="style-section-properties-content">
+            <ref name="style-section-properties-content-strict"/>
+        </define>
+        <define name="style-list-level-properties-content">
+            <ref name="style-list-level-properties-content-strict"/>
+        </define>
+        <define name="style-table-properties-content">
+            <ref name="style-table-properties-content-strict"/>
+        </define>
+        <define name="style-table-column-properties-content">
+            <ref name="style-table-column-properties-content-strict"/>
+        </define>
+        <define name="style-table-row-properties-content">
+            <ref name="style-table-row-properties-content-strict"/>
+        </define>
+        <define name="style-table-cell-properties-content">
+            <ref name="style-table-cell-properties-content-strict"/>
+        </define>
+        <define name="style-graphic-properties-content">
+            <ref name="style-graphic-properties-content-strict"/>
+        </define>
+        <define name="style-chart-properties-content">
+            <ref name="style-chart-properties-content-strict"/>
+        </define>
+    </include>
+</grammar>
diff --git a/validator/src/main/resources/schema/odf1.2/OpenDocument-v1.2-os-dsig-schema.rng b/validator/src/main/resources/schema/odf1.2/OpenDocument-v1.2-os-dsig-schema.rng
new file mode 100644
index 0000000..baab699
--- /dev/null
+++ b/validator/src/main/resources/schema/odf1.2/OpenDocument-v1.2-os-dsig-schema.rng
@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+        Open Document Format for Office Applications (OpenDocument) Version 1.2
+        OASIS Standard, 29 September 2011
+	Digital Signatures Relax-NG Schema
+        Source: http://docs.oasis-open.org/office/v1.2/os/
+        Copyright (c) OASIS Open 2002-2011. All Rights Reserved.
+
+	All capitalized terms in the following text have the meanings assigned to them
+   	in the OASIS Intellectual Property Rights Policy (the "OASIS IPR Policy"). The
+	full Policy may be found at the OASIS website.
+
+	This document and translations of it may be copied and furnished to others, and
+	derivative works that comment on or otherwise explain it or assist in its
+	implementation may be prepared, copied, published, and distributed, in whole or
+	in part, without restriction of any kind, provided that the above copyright
+	notice and this section are included on all such copies and derivative works.
+	However, this document itself may not be modified in any way, including by
+	removing the copyright notice or references to OASIS, except as needed for the
+	purpose of developing any document or deliverable produced by an OASIS
+	Technical Committee (in which case the rules applicable to copyrights, as set
+	forth in the OASIS IPR Policy, must be followed) or as required to translate it
+	into languages other than English.
+
+	The limited permissions granted above are perpetual and will not be revoked by
+	OASIS or its successors or assigns.
+
+	This document and the information contained herein is provided on an "AS IS"
+	basis and OASIS DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT
+	LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT
+	INFRINGE ANY OWNERSHIP RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR
+	FITNESS FOR A PARTICULAR PURPOSE. 
+-->
+
+<grammar
+	xmlns="http://relaxng.org/ns/structure/1.0"
+
+	datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"
+
+	xmlns:dsig="urn:oasis:names:tc:opendocument:xmlns:digitalsignature:1.0"
+	xmlns:ds="http://www.w3.org/2000/09/xmldsig#"
+>
+<start>
+	<choice>
+		<ref name="dsig-document-signatures"/>
+	</choice>
+</start>
+<define name="dsig-document-signatures">
+	<element name="dsig:document-signatures">
+		<ref name="dsig-document-signatures-attlist"/>
+		<oneOrMore>
+			<ref name="ds-signature"/>
+		</oneOrMore>
+	</element>
+</define>
+<define name="dsig-document-signatures-attlist">
+	<attribute name="dsig:version">
+		<value>1.2</value>
+	</attribute>
+</define>
+<define name="ds-signature">
+	<element name="ds:Signature">
+		<!-- The permitted content of this element is the permitted -->
+		<!-- content of the Signature element defined by W3C XML    -->
+		<!-- Signature Syntax and Processing (Second Edition).      -->
+		<!-- See OpenDocument v1.2 part 3, section 4.3.             -->
+		<ref name="dsMarkup"/>
+	</element>
+</define>
+<define name="dsMarkup">
+	<zeroOrMore>
+		<choice>
+			<attribute>
+				<anyName/>
+			</attribute>
+			<text/>
+			<element>
+				<anyName/>
+				<ref name="dsMarkup"/>
+			</element>
+		</choice>
+	</zeroOrMore>
+</define>
+</grammar>
diff --git a/validator/src/main/resources/schema/odf1.2/OpenDocument-v1.2-os-manifest-schema.rng b/validator/src/main/resources/schema/odf1.2/OpenDocument-v1.2-os-manifest-schema.rng
new file mode 100644
index 0000000..af13a26
--- /dev/null
+++ b/validator/src/main/resources/schema/odf1.2/OpenDocument-v1.2-os-manifest-schema.rng
@@ -0,0 +1,224 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+        Open Document Format for Office Applications (OpenDocument) Version 1.2
+        OASIS Standard, 29 September 2011
+	Manifest Relax-NG Schema
+        Source: http://docs.oasis-open.org/office/v1.2/os/
+        Copyright (c) OASIS Open 2002-2011. All Rights Reserved.
+
+	All capitalized terms in the following text have the meanings assigned to them
+   	in the OASIS Intellectual Property Rights Policy (the "OASIS IPR Policy"). The
+	full Policy may be found at the OASIS website.
+
+	This document and translations of it may be copied and furnished to others, and
+	derivative works that comment on or otherwise explain it or assist in its
+	implementation may be prepared, copied, published, and distributed, in whole or
+	in part, without restriction of any kind, provided that the above copyright
+	notice and this section are included on all such copies and derivative works.
+	However, this document itself may not be modified in any way, including by
+	removing the copyright notice or references to OASIS, except as needed for the
+	purpose of developing any document or deliverable produced by an OASIS
+	Technical Committee (in which case the rules applicable to copyrights, as set
+	forth in the OASIS IPR Policy, must be followed) or as required to translate it
+	into languages other than English.
+
+	The limited permissions granted above are perpetual and will not be revoked by
+	OASIS or its successors or assigns.
+
+	This document and the information contained herein is provided on an "AS IS"
+	basis and OASIS DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT
+	LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT
+	INFRINGE ANY OWNERSHIP RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR
+	FITNESS FOR A PARTICULAR PURPOSE. 
+-->
+<grammar 
+	xmlns="http://relaxng.org/ns/structure/1.0"
+
+	datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"
+
+	xmlns:manifest="urn:oasis:names:tc:opendocument:xmlns:manifest:1.0"
+>
+<start>
+	<choice>
+		<ref name="manifest"/>
+	</choice>
+</start>
+<define name="manifest">
+	<element name="manifest:manifest">
+		<ref name="manifest-attlist"/>
+		<oneOrMore>
+			<ref name="file-entry"/>
+		</oneOrMore>
+	</element>
+</define>
+<define name="manifest-attlist">
+	<attribute name="manifest:version">
+		<value>1.2</value>
+	</attribute>
+</define>
+<define name="file-entry">
+	<element name="manifest:file-entry">
+		<ref name="file-entry-attlist"/>
+		<optional>
+			<ref name="encryption-data"/>
+		</optional>
+	</element>
+</define>
+<define name="file-entry-attlist">
+  <interleave>
+	<attribute name="manifest:full-path">
+		<ref name="string"/>
+	</attribute>
+	<optional>
+		<attribute name="manifest:size">
+			<ref name="nonNegativeInteger"/>
+		</attribute>
+	</optional>
+	<attribute name="manifest:media-type">
+		<ref name="string"/>
+	</attribute>
+	<optional>
+		<attribute name="manifest:preferred-view-mode">
+			<choice>
+				<value>edit</value>
+				<value>presentation-slide-show</value>
+				<value>read-only</value>
+				<ref name="namespacedToken"/> 
+			</choice> 
+		</attribute> 
+	</optional> 
+	<optional>
+		<attribute name="manifest:version">
+			<ref name="string"/>
+		</attribute>
+	</optional>
+  </interleave>
+</define>
+
+<define name="encryption-data">
+	<element name="manifest:encryption-data">
+		<ref name="encryption-data-attlist"/>
+		<ref name="algorithm"/>
+		<optional>
+			<ref name="start-key-generation"/>
+		</optional>
+		<ref name="key-derivation"/>
+	</element>
+</define>
+<define name="encryption-data-attlist">
+  <interleave>
+	<attribute name="manifest:checksum-type">
+		<choice>
+			<value>SHA1/1K</value>
+			<ref name="anyURI"/>
+		</choice>
+	</attribute>
+	<attribute name="manifest:checksum">
+		<ref name="base64Binary"/>
+	</attribute>
+  </interleave>
+</define>
+<define name="algorithm">
+	<element name="manifest:algorithm">
+		<ref name="algorithm-attlist"/>
+		<ref name="anyElements"/>
+	</element>
+</define>
+<define name="algorithm-attlist">
+  <interleave>
+	<attribute name="manifest:algorithm-name">
+		<choice>
+			<value>Blowfish CFB</value>
+			<ref name="anyURI"/>
+		</choice>
+	</attribute>
+	<attribute name="manifest:initialisation-vector">
+		<ref name="base64Binary"/>
+	</attribute>
+  </interleave>
+</define>
+<define name="anyAttListOrElements">
+	<zeroOrMore>
+		<attribute>
+			<anyName/>
+			<text/>
+		</attribute>
+	</zeroOrMore>
+	<ref name="anyElements"/>
+</define>
+<define name="anyElements">
+	<zeroOrMore>
+		<element>
+			<anyName/>
+			<mixed>
+				<ref name="anyAttListOrElements"/>
+			</mixed>
+		</element>
+	</zeroOrMore>
+</define>
+<define name="key-derivation">
+	<element name="manifest:key-derivation">
+		<ref name="key-derivation-attlist"/>
+		<empty/>
+	</element>
+</define>
+<define name="key-derivation-attlist">
+  <interleave>
+	<attribute name="manifest:key-derivation-name">
+		<choice>
+			<value>PBKDF2</value>
+			<ref name="anyURI"/>
+		</choice>
+	</attribute>
+	<attribute name="manifest:salt">
+		<ref name="base64Binary"/>
+	</attribute>
+	<attribute name="manifest:iteration-count">
+			<ref name="nonNegativeInteger"/>
+		</attribute>
+	<optional>
+		<attribute name="manifest:key-size">
+			<ref name="nonNegativeInteger"/>
+		</attribute>
+	</optional>
+  </interleave>
+</define>
+<define name="start-key-generation">
+	<element name="manifest:start-key-generation">
+		<ref name="start-key-generation-attlist"/>
+		<empty/>
+	</element>
+</define>
+<define name="start-key-generation-attlist">
+  <interleave>
+	<attribute name="manifest:start-key-generation-name">
+		<choice>
+			<value>SHA1</value>
+			<ref name="anyURI"/>
+		</choice>
+	</attribute>
+	<optional>
+		<attribute name="manifest:key-size">
+			<ref name="nonNegativeInteger"/>
+		</attribute>
+	</optional>
+  </interleave>
+</define>
+<define name="base64Binary">
+	<data type="base64Binary"/>
+</define>
+<define name="namespacedToken">
+	<data type="QName">
+		<param name="pattern">[^:]+:[^:]+</param>
+	</data>
+</define>
+<define name="nonNegativeInteger">
+	<data type="nonNegativeInteger"/>
+</define>
+<define name="string">
+	<data type="string"/>
+</define>
+<define name="anyURI">
+	<data type="anyURI"/>
+</define>
+</grammar>
diff --git a/validator/src/main/resources/schema/odf1.2/OpenDocument-v1.2-os-metadata.owl b/validator/src/main/resources/schema/odf1.2/OpenDocument-v1.2-os-metadata.owl
new file mode 100644
index 0000000..a1eff11
--- /dev/null
+++ b/validator/src/main/resources/schema/odf1.2/OpenDocument-v1.2-os-metadata.owl
@@ -0,0 +1,86 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+        Open Document Format for Office Applications (OpenDocument) Version 1.2
+        OASIS Standard, 29 September 2011
+	OWL Metadata Manifest Description
+        Source: http://docs.oasis-open.org/office/v1.2/os/
+        Copyright (c) OASIS Open 2002-2011. All Rights Reserved.
+
+	All capitalized terms in the following text have the meanings assigned to them
+   	in the OASIS Intellectual Property Rights Policy (the "OASIS IPR Policy"). The
+	full Policy may be found at the OASIS website.
+
+	This document and translations of it may be copied and furnished to others, and
+	derivative works that comment on or otherwise explain it or assist in its
+	implementation may be prepared, copied, published, and distributed, in whole or
+	in part, without restriction of any kind, provided that the above copyright
+	notice and this section are included on all such copies and derivative works.
+	However, this document itself may not be modified in any way, including by
+	removing the copyright notice or references to OASIS, except as needed for the
+	purpose of developing any document or deliverable produced by an OASIS
+	Technical Committee (in which case the rules applicable to copyrights, as set
+	forth in the OASIS IPR Policy, must be followed) or as required to translate it
+	into languages other than English.
+
+	The limited permissions granted above are perpetual and will not be revoked by
+	OASIS or its successors or assigns.
+
+	This document and the information contained herein is provided on an "AS IS"
+	basis and OASIS DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT
+	LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT
+	INFRINGE ANY OWNERSHIP RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR
+	FITNESS FOR A PARTICULAR PURPOSE. 
+-->
+
+<rdf:RDF
+	xmlns="http://www.w3.org/2000/01/rdf-schema#"
+	xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+	xmlns:owl="http://www.w3.org/2002/07/owl#"
+	xmlns:dc="http://purl.org/dc/elements/1.1/"
+	xmlns:pkg="http://docs.oasis-open.org/ns/office/1.2/meta/pkg#"
+	xmlns:odf="http://docs.oasis-open.org/ns/office/1.2/meta/odf#">
+
+<owl:Ontology rdf:about="http://docs.oasis-open.org/ns/office/1.2/meta/odf#">
+	<owl:imports rdf:resource="http://docs.oasis-open.org/office/v1.2/os/OpenDocument-v1.2-os-package-metadata.owl" />
+	<rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Thing"/>
+	<dc:title xml:lang="en">Open Document Schema Metadata Manifest Ontology</dc:title>
+	<label xml:lang="en">ODF Schema Metadata Manifest</label>
+</owl:Ontology>
+
+<owl:Class rdf:about="http://docs.oasis-open.org/ns/office/1.2/meta/odf#ContentFile">
+	<label xml:lang="en">The OpenDocument Content File</label>
+	<comment xml:lang="en">The unique content.xml from the root path of the document</comment>
+	<subClassOf rdf:resource="http://docs.oasis-open.org/ns/office/1.2/meta/pkg#File"/>
+</owl:Class>
+
+<owl:Class rdf:about="http://docs.oasis-open.org/ns/office/1.2/meta/odf#StylesFile">
+	<label xml:lang="en">The OpenDocument Styles File</label>
+	<comment xml:lang="en">The unique styles.xml from the root path of the document</comment>
+	<subClassOf rdf:resource="http://docs.oasis-open.org/ns/office/1.2/meta/pkg#File"/>
+</owl:Class>
+
+<owl:Class rdf:about="http://docs.oasis-open.org/ns/office/1.2/meta/odf#Element">
+	<label xml:lang="en">OpenDocument Package ODF XML Element</label>
+	<subClassOf rdf:resource="http://docs.oasis-open.org/ns/office/1.2/meta/pkg#Element"/>
+</owl:Class>
+
+<owl:Class rdf:about="urn:oasis:names:tc:opendocument:xmlns:text:1.0meta-field">
+	<label xml:lang="en">OpenDocument Meta field Element</label>
+	<subClassOf rdf:resource="http://docs.oasis-open.org/ns/office/1.2/meta/odf#Element"/>
+</owl:Class>
+
+<owl:DatatypeProperty rdf:about="http://docs.oasis-open.org/ns/office/1.2/meta/odf#prefix">
+	<rdf:type rdf:resource="http://www.w3.org/2002/07/owl#FunctionalProperty"/>
+	<domain rdf:resource="urn:oasis:names:tc:opendocument:xmlns:text:1.0meta-field"/>
+	<range rdf:resource="http://www.w3.org/2001/XMLSchema-datatypes#string"/>
+	<label xml:lang="en">has prefix</label>
+</owl:DatatypeProperty>
+
+<owl:DatatypeProperty rdf:about="http://docs.oasis-open.org/ns/office/1.2/meta/odf#suffix">
+	<rdf:type rdf:resource="http://www.w3.org/2002/07/owl#FunctionalProperty"/>
+	<domain rdf:resource="urn:oasis:names:tc:opendocument:xmlns:text:1.0meta-field"/>
+	<range rdf:resource="http://www.w3.org/2001/XMLSchema-datatypes#string"/>
+	<label xml:lang="en">has suffix</label>
+</owl:DatatypeProperty>
+</rdf:RDF>
+
diff --git a/validator/src/main/resources/schema/odf1.2/OpenDocument-v1.2-os-package-metadata.owl b/validator/src/main/resources/schema/odf1.2/OpenDocument-v1.2-os-package-metadata.owl
new file mode 100644
index 0000000..2416955
--- /dev/null
+++ b/validator/src/main/resources/schema/odf1.2/OpenDocument-v1.2-os-package-metadata.owl
@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+        Open Document Format for Office Applications (OpenDocument) Version 1.2
+        OASIS Standard, 29 September 2011
+	OWL Metadata Manifest Description
+        Source: http://docs.oasis-open.org/office/v1.2/os/
+        Copyright (c) OASIS Open 2002-2011. All Rights Reserved.
+
+	All capitalized terms in the following text have the meanings assigned to them
+   	in the OASIS Intellectual Property Rights Policy (the "OASIS IPR Policy"). The
+	full Policy may be found at the OASIS website.
+
+	This document and translations of it may be copied and furnished to others, and
+	derivative works that comment on or otherwise explain it or assist in its
+	implementation may be prepared, copied, published, and distributed, in whole or
+	in part, without restriction of any kind, provided that the above copyright
+	notice and this section are included on all such copies and derivative works.
+	However, this document itself may not be modified in any way, including by
+	removing the copyright notice or references to OASIS, except as needed for the
+	purpose of developing any document or deliverable produced by an OASIS
+	Technical Committee (in which case the rules applicable to copyrights, as set
+	forth in the OASIS IPR Policy, must be followed) or as required to translate it
+	into languages other than English.
+
+	The limited permissions granted above are perpetual and will not be revoked by
+	OASIS or its successors or assigns.
+
+	This document and the information contained herein is provided on an "AS IS"
+	basis and OASIS DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT
+	LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT
+	INFRINGE ANY OWNERSHIP RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR
+	FITNESS FOR A PARTICULAR PURPOSE. 
+-->
+
+<rdf:RDF
+	xmlns="http://www.w3.org/2000/01/rdf-schema#"
+	xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+	xmlns:owl="http://www.w3.org/2002/07/owl#"
+	xmlns:dc="http://purl.org/dc/elements/1.1/"
+	xmlns:pkg="http://docs.oasis-open.org/ns/office/1.2/meta/pkg#">
+
+<owl:Ontology rdf:about="http://docs.oasis-open.org/ns/office/1.2/meta/pkg#">
+	<rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Thing"/>
+	<dc:title xml:lang="en">Open Document Package Metadata Manifest Ontology</dc:title>
+	<label xml:lang="en">ODF Package Metadata Manifest</label>
+</owl:Ontology>
+
+<owl:Class rdf:about="http://docs.oasis-open.org/ns/office/1.2/meta/pkg#Document">
+	<label xml:lang="en">OpenDocument Document</label>
+</owl:Class>
+
+<owl:Class rdf:about="http://docs.oasis-open.org/ns/office/1.2/meta/pkg#File">
+	<label xml:lang="en"> OpenDocument Document Package File</label>
+</owl:Class>
+
+<owl:ObjectProperty rdf:about="http://docs.oasis-open.org/ns/office/1.2/meta/pkg#hasPart">
+	<domain rdf:resource="http://docs.oasis-open.org/ns/office/1.2/meta/pkg#Document"/>
+	<range rdf:resource="http://docs.oasis-open.org/ns/office/1.2/meta/pkg#File"/>
+	<label xml:lang="en">contains</label>
+	<comment xml:lang="en">Related to dcterms:hasPart of the Dublin Core Metadata Initiative</comment>
+</owl:ObjectProperty>
+
+<owl:Class rdf:about="http://docs.oasis-open.org/ns/office/1.2/meta/pkg#MetadataFile">
+	<label xml:lang="en">An OpenDocument Metadata File</label>
+	<comment xml:lang="en">Used for any metadata file in the document</comment>
+	<subClassOf rdf:resource="http://docs.oasis-open.org/ns/office/1.2/meta/pkg#File"/>
+</owl:Class>
+
+<owl:DatatypeProperty rdf:about="http://docs.oasis-open.org/ns/office/1.2/meta/pkg#mimeType">
+	<rdf:type rdf:resource="http://www.w3.org/2002/07/owl#FunctionalProperty"/>
+	<domain rdf:resource="http://docs.oasis-open.org/ns/office/1.2/meta/pkg#File"/>
+	<range rdf:resource="http://www.w3.org/2001/XMLSchema-datatypes#string"/>
+	<label xml:lang="en">the MIME type</label>
+	<comment xml:lang="en">A string representing the MIME media type of a file (see RFC4288).</comment>
+</owl:DatatypeProperty>
+
+<owl:Class rdf:about="http://docs.oasis-open.org/ns/office/1.2/meta/pkg#Element">
+	<label xml:lang="en">OpenDocument Package XML Element</label>
+</owl:Class>
+
+</rdf:RDF>
diff --git a/validator/src/main/resources/schema/odf1.2/OpenDocument-v1.2-os-schema.rng b/validator/src/main/resources/schema/odf1.2/OpenDocument-v1.2-os-schema.rng
new file mode 100644
index 0000000..538c335
--- /dev/null
+++ b/validator/src/main/resources/schema/odf1.2/OpenDocument-v1.2-os-schema.rng
@@ -0,0 +1,18127 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+        Open Document Format for Office Applications (OpenDocument) Version 1.2
+        OASIS Standard, 29 September 2011
+	Relax-NG Schema
+        Source: http://docs.oasis-open.org/office/v1.2/os/
+        Copyright (c) OASIS Open 2002-2011. All Rights Reserved.
+
+	All capitalized terms in the following text have the meanings assigned to them
+	in the OASIS Intellectual Property Rights Policy (the "OASIS IPR Policy"). The
+	full Policy may be found at the OASIS website.
+
+	This document and translations of it may be copied and furnished to others, and
+	derivative works that comment on or otherwise explain it or assist in its
+	implementation may be prepared, copied, published, and distributed, in whole or
+	in part, without restriction of any kind, provided that the above copyright
+	notice and this section are included on all such copies and derivative works.
+	However, this document itself may not be modified in any way, including by
+	removing the copyright notice or references to OASIS, except as needed for the
+	purpose of developing any document or deliverable produced by an OASIS
+	Technical Committee (in which case the rules applicable to copyrights, as set
+	forth in the OASIS IPR Policy, must be followed) or as required to translate it
+	into languages other than English.
+
+	The limited permissions granted above are perpetual and will not be revoked by
+	OASIS or its successors or assigns.
+
+	This document and the information contained herein is provided on an "AS IS"
+	basis and OASIS DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT
+	LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT
+	INFRINGE ANY OWNERSHIP RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR
+	FITNESS FOR A PARTICULAR PURPOSE. 
+-->
+<grammar
+	xmlns="http://relaxng.org/ns/structure/1.0"
+
+	datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"
+
+	xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0"
+	xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0"
+	xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0"
+	xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
+	xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0"
+	xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"
+	xmlns:presentation="urn:oasis:names:tc:opendocument:xmlns:presentation:1.0"
+	xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0"
+	xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0"
+	xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0"
+	xmlns:db="urn:oasis:names:tc:opendocument:xmlns:database:1.0"
+	xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0"
+	xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0"
+	xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0"
+	xmlns:anim="urn:oasis:names:tc:opendocument:xmlns:animation:1.0"
+
+	xmlns:dc="http://purl.org/dc/elements/1.1/"
+	xmlns:xlink="http://www.w3.org/1999/xlink"
+	xmlns:math="http://www.w3.org/1998/Math/MathML"
+	xmlns:xforms="http://www.w3.org/2002/xforms"
+	xmlns:grddl="http://www.w3.org/2003/g/data-view#"
+	xmlns:xhtml="http://www.w3.org/1999/xhtml"
+
+	xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0"
+	xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0"
+	xmlns:smil="urn:oasis:names:tc:opendocument:xmlns:smil-compatible:1.0"
+>
+	<define name="office-process-content">
+		<optional>
+			<attribute name="office:process-content">
+				<ref name="boolean"/>
+			</attribute>
+		</optional>
+	</define>
+	<start>
+		<choice>
+			<ref name="office-document"/>
+			<ref name="office-document-content"/>
+			<ref name="office-document-styles"/>
+			<ref name="office-document-meta"/>
+			<ref name="office-document-settings"/>
+		</choice>
+	</start>
+	<define name="office-document">
+		<element name="office:document">
+			<ref name="office-document-attrs"/>
+			<ref name="office-document-common-attrs"/>
+			<ref name="office-meta"/>
+			<ref name="office-settings"/>
+			<ref name="office-scripts"/>
+			<ref name="office-font-face-decls"/>
+			<ref name="office-styles"/>
+			<ref name="office-automatic-styles"/>
+			<ref name="office-master-styles"/>
+			<ref name="office-body"/>
+		</element>
+	</define>
+	<define name="office-document-content">
+		<element name="office:document-content">
+			<ref name="office-document-common-attrs"/>
+			<ref name="office-scripts"/>
+			<ref name="office-font-face-decls"/>
+			<ref name="office-automatic-styles"/>
+			<ref name="office-body"/>
+		</element>
+	</define>
+	<define name="office-document-styles">
+		<element name="office:document-styles">
+			<ref name="office-document-common-attrs"/>
+			<ref name="office-font-face-decls"/>
+			<ref name="office-styles"/>
+			<ref name="office-automatic-styles"/>
+			<ref name="office-master-styles"/>
+		</element>
+	</define>
+	<define name="office-document-meta">
+		<element name="office:document-meta">
+			<ref name="office-document-common-attrs"/>
+			<ref name="office-meta"/>
+		</element>
+	</define>
+	<define name="office-document-settings">
+		<element name="office:document-settings">
+			<ref name="office-document-common-attrs"/>
+			<ref name="office-settings"/>
+		</element>
+	</define>
+	<define name="office-document-common-attrs">
+		<interleave>
+			<attribute name="office:version">
+				<value>1.2</value>
+			</attribute>
+			<optional>
+				<attribute name="grddl:transformation">
+					<list>
+						<zeroOrMore>
+							<ref name="anyIRI"/>
+						</zeroOrMore>
+					</list>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="office-document-attrs">
+		<attribute name="office:mimetype">
+			<ref name="string"/>
+		</attribute>
+	</define>
+	<define name="office-meta">
+		<optional>
+			<element name="office:meta">
+				<ref name="office-meta-content-strict"/>
+			</element>
+		</optional>
+	</define>
+	<define name="office-meta-content-strict">
+		<zeroOrMore>
+			<ref name="office-meta-data"/>
+		</zeroOrMore>
+	</define>
+	<define name="office-body">
+		<element name="office:body">
+			<ref name="office-body-content"/>
+		</element>
+	</define>
+	<define name="office-body-content">
+		<choice>
+			<element name="office:text">
+				<ref name="office-text-attlist"/>
+				<ref name="office-text-content-prelude"/>
+				<ref name="office-text-content-main"/>
+				<ref name="office-text-content-epilogue"/>
+			</element>
+			<element name="office:drawing">
+				<ref name="office-drawing-attlist"/>
+				<ref name="office-drawing-content-prelude"/>
+				<ref name="office-drawing-content-main"/>
+				<ref name="office-drawing-content-epilogue"/>
+			</element>
+			<element name="office:presentation">
+				<ref name="office-presentation-attlist"/>
+				<ref name="office-presentation-content-prelude"/>
+				<ref name="office-presentation-content-main"/>
+				<ref name="office-presentation-content-epilogue"/>
+			</element>
+			<element name="office:spreadsheet">
+				<ref name="office-spreadsheet-attlist"/>
+				<ref name="office-spreadsheet-content-prelude"/>
+				<ref name="office-spreadsheet-content-main"/>
+				<ref name="office-spreadsheet-content-epilogue"/>
+			</element>
+			<element name="office:chart">
+				<ref name="office-chart-attlist"/>
+				<ref name="office-chart-content-prelude"/>
+				<ref name="office-chart-content-main"/>
+				<ref name="office-chart-content-epilogue"/>
+			</element>
+			<element name="office:image">
+				<ref name="office-image-attlist"/>
+				<ref name="office-image-content-prelude"/>
+				<ref name="office-image-content-main"/>
+				<ref name="office-image-content-epilogue"/>
+			</element>
+			<ref name="office-database"/>
+		</choice>
+	</define>
+	<define name="office-text-content-prelude">
+		<ref name="office-forms"/>
+		<ref name="text-tracked-changes"/>
+		<ref name="text-decls"/>
+		<ref name="table-decls"/>
+	</define>
+	<define name="office-text-content-main">
+		<choice>
+			<zeroOrMore>
+				<ref name="text-content"/>
+			</zeroOrMore>
+			<group>
+				<ref name="text-page-sequence"/>
+				<zeroOrMore>
+					<choice>
+						<ref name="shape"/>
+					</choice>
+				</zeroOrMore>
+			</group>
+		</choice>
+	</define>
+	<define name="text-content">
+		<choice>
+			<ref name="text-h"/>
+			<ref name="text-p"/>
+			<ref name="text-list"/>
+			<ref name="text-numbered-paragraph"/>
+			<ref name="table-table"/>
+			<ref name="text-section"/>
+			<ref name="text-soft-page-break"/>
+			<ref name="text-table-of-content"/>
+			<ref name="text-illustration-index"/>
+			<ref name="text-table-index"/>
+			<ref name="text-object-index"/>
+			<ref name="text-user-index"/>
+			<ref name="text-alphabetical-index"/>
+			<ref name="text-bibliography"/>
+			<ref name="shape"/>
+			<ref name="change-marks"/>
+		</choice>
+	</define>
+	<define name="office-text-content-epilogue">
+		<ref name="table-functions"/>
+	</define>
+	<define name="office-text-attlist">
+		<interleave>
+			<optional>
+				<attribute name="text:global">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:use-soft-page-breaks">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="office-drawing-attlist">
+		<empty/>
+	</define>
+	<define name="office-drawing-content-prelude">
+		<ref name="text-decls"/>
+		<ref name="table-decls"/>
+	</define>
+	<define name="office-drawing-content-main">
+		<zeroOrMore>
+			<ref name="draw-page"/>
+		</zeroOrMore>
+	</define>
+	<define name="office-drawing-content-epilogue">
+		<ref name="table-functions"/>
+	</define>
+	<define name="office-presentation-attlist">
+		<empty/>
+	</define>
+	<define name="office-presentation-content-prelude">
+		<ref name="text-decls"/>
+		<ref name="table-decls"/>
+		<ref name="presentation-decls"/>
+	</define>
+	<define name="office-presentation-content-main">
+		<zeroOrMore>
+			<ref name="draw-page"/>
+		</zeroOrMore>
+	</define>
+	<define name="office-presentation-content-epilogue">
+		<ref name="presentation-settings"/>
+		<ref name="table-functions"/>
+	</define>
+	<define name="office-spreadsheet-content-prelude">
+		<optional>
+			<ref name="table-tracked-changes"/>
+		</optional>
+		<ref name="text-decls"/>
+		<ref name="table-decls"/>
+	</define>
+	<define name="table-decls">
+		<optional>
+			<ref name="table-calculation-settings"/>
+		</optional>
+		<optional>
+			<ref name="table-content-validations"/>
+		</optional>
+		<optional>
+			<ref name="table-label-ranges"/>
+		</optional>
+	</define>
+	<define name="office-spreadsheet-content-main">
+		<zeroOrMore>
+			<ref name="table-table"/>
+		</zeroOrMore>
+	</define>
+	<define name="office-spreadsheet-content-epilogue">
+		<ref name="table-functions"/>
+	</define>
+	<define name="table-functions">
+		<optional>
+			<ref name="table-named-expressions"/>
+		</optional>
+		<optional>
+			<ref name="table-database-ranges"/>
+		</optional>
+		<optional>
+			<ref name="table-data-pilot-tables"/>
+		</optional>
+		<optional>
+			<ref name="table-consolidation"/>
+		</optional>
+		<optional>
+			<ref name="table-dde-links"/>
+		</optional>
+	</define>
+	<define name="office-chart-attlist">
+		<empty/>
+	</define>
+	<define name="office-chart-content-prelude">
+		<ref name="text-decls"/>
+		<ref name="table-decls"/>
+	</define>
+	<define name="office-chart-content-main">
+		<ref name="chart-chart"/>
+	</define>
+	<define name="office-chart-content-epilogue">
+		<ref name="table-functions"/>
+	</define>
+	<define name="office-image-attlist">
+		<empty/>
+	</define>
+	<define name="office-image-content-prelude">
+		<empty/>
+	</define>
+	<define name="office-image-content-main">
+		<ref name="draw-frame"/>
+	</define>
+	<define name="office-image-content-epilogue">
+		<empty/>
+	</define>
+	<define name="office-settings">
+		<optional>
+			<element name="office:settings">
+				<oneOrMore>
+					<ref name="config-config-item-set"/>
+				</oneOrMore>
+			</element>
+		</optional>
+	</define>
+	<define name="config-config-item-set">
+		<element name="config:config-item-set">
+			<ref name="config-config-item-set-attlist"/>
+			<ref name="config-items"/>
+		</element>
+	</define>
+	<define name="config-items">
+		<oneOrMore>
+			<choice>
+				<ref name="config-config-item"/>
+				<ref name="config-config-item-set"/>
+				<ref name="config-config-item-map-named"/>
+				<ref name="config-config-item-map-indexed"/>
+			</choice>
+		</oneOrMore>
+	</define>
+	<define name="config-config-item-set-attlist">
+		<attribute name="config:name">
+			<ref name="string"/>
+		</attribute>
+	</define>
+	<define name="config-config-item">
+		<element name="config:config-item">
+			<ref name="config-config-item-attlist"/>
+			<text/>
+		</element>
+	</define>
+	<define name="config-config-item-attlist">
+		<interleave>
+			<attribute name="config:name">
+				<ref name="string"/>
+			</attribute>
+			<attribute name="config:type">
+				<choice>
+					<value>boolean</value>
+					<value>short</value>
+					<value>int</value>
+					<value>long</value>
+					<value>double</value>
+					<value>string</value>
+					<value>datetime</value>
+					<value>base64Binary</value>
+				</choice>
+			</attribute>
+		</interleave>
+	</define>
+	<define name="config-config-item-map-indexed">
+		<element name="config:config-item-map-indexed">
+			<ref name="config-config-item-map-indexed-attlist"/>
+			<oneOrMore>
+				<ref name="config-config-item-map-entry"/>
+			</oneOrMore>
+		</element>
+	</define>
+	<define name="config-config-item-map-indexed-attlist">
+		<attribute name="config:name">
+			<ref name="string"/>
+		</attribute>
+	</define>
+	<define name="config-config-item-map-entry">
+		<element name="config:config-item-map-entry">
+			<ref name="config-config-item-map-entry-attlist"/>
+			<ref name="config-items"/>
+		</element>
+	</define>
+	<define name="config-config-item-map-entry-attlist">
+		<optional>
+			<attribute name="config:name">
+				<ref name="string"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="config-config-item-map-named">
+		<element name="config:config-item-map-named">
+			<ref name="config-config-item-map-named-attlist"/>
+			<oneOrMore>
+				<ref name="config-config-item-map-entry"/>
+			</oneOrMore>
+		</element>
+	</define>
+	<define name="config-config-item-map-named-attlist">
+		<attribute name="config:name">
+			<ref name="string"/>
+		</attribute>
+	</define>
+	<define name="office-scripts">
+		<optional>
+			<element name="office:scripts">
+				<zeroOrMore>
+					<ref name="office-script"/>
+				</zeroOrMore>
+				<optional>
+					<ref name="office-event-listeners"/>
+				</optional>
+			</element>
+		</optional>
+	</define>
+	<define name="office-script">
+		<element name="office:script">
+			<ref name="office-script-attlist"/>
+			<mixed>
+				<ref name="anyElements"/>
+			</mixed>
+		</element>
+	</define>
+	<define name="office-script-attlist">
+		<attribute name="script:language">
+			<ref name="string"/>
+		</attribute>
+	</define>
+	<define name="office-font-face-decls">
+		<optional>
+			<element name="office:font-face-decls">
+				<zeroOrMore>
+					<ref name="style-font-face"/>
+				</zeroOrMore>
+			</element>
+		</optional>
+	</define>
+	<define name="office-styles">
+		<optional>
+			<element name="office:styles">
+				<interleave>
+					<ref name="styles"/>
+					<zeroOrMore>
+						<ref name="style-default-style"/>
+					</zeroOrMore>
+					<optional>
+						<ref name="style-default-page-layout"/>
+					</optional>
+					<optional>
+						<ref name="text-outline-style"/>
+					</optional>
+					<zeroOrMore>
+						<ref name="text-notes-configuration"/>
+					</zeroOrMore>
+					<optional>
+						<ref name="text-bibliography-configuration"/>
+					</optional>
+					<optional>
+						<ref name="text-linenumbering-configuration"/>
+					</optional>
+					<zeroOrMore>
+						<ref name="draw-gradient"/>
+					</zeroOrMore>
+					<zeroOrMore>
+						<ref name="svg-linearGradient"/>
+					</zeroOrMore>
+					<zeroOrMore>
+						<ref name="svg-radialGradient"/>
+					</zeroOrMore>
+					<zeroOrMore>
+						<ref name="draw-hatch"/>
+					</zeroOrMore>
+					<zeroOrMore>
+						<ref name="draw-fill-image"/>
+					</zeroOrMore>
+					<zeroOrMore>
+						<ref name="draw-marker"/>
+					</zeroOrMore>
+					<zeroOrMore>
+						<ref name="draw-stroke-dash"/>
+					</zeroOrMore>
+					<zeroOrMore>
+						<ref name="draw-opacity"/>
+					</zeroOrMore>
+					<zeroOrMore>
+						<ref name="style-presentation-page-layout"/>
+					</zeroOrMore>
+					<zeroOrMore>
+						<ref name="table-table-template"/>
+					</zeroOrMore>
+				</interleave>
+			</element>
+		</optional>
+	</define>
+	<define name="office-automatic-styles">
+		<optional>
+			<element name="office:automatic-styles">
+				<interleave>
+					<ref name="styles"/>
+					<zeroOrMore>
+						<ref name="style-page-layout"/>
+					</zeroOrMore>
+				</interleave>
+			</element>
+		</optional>
+	</define>
+	<define name="office-master-styles">
+		<optional>
+			<element name="office:master-styles">
+				<interleave>
+					<zeroOrMore>
+						<ref name="style-master-page"/>
+					</zeroOrMore>
+					<optional>
+						<ref name="style-handout-master"/>
+					</optional>
+					<optional>
+						<ref name="draw-layer-set"/>
+					</optional>
+				</interleave>
+			</element>
+		</optional>
+	</define>
+	<define name="styles">
+		<interleave>
+			<zeroOrMore>
+				<ref name="style-style"/>
+			</zeroOrMore>
+			<zeroOrMore>
+				<ref name="text-list-style"/>
+			</zeroOrMore>
+			<zeroOrMore>
+				<ref name="number-number-style"/>
+			</zeroOrMore>
+			<zeroOrMore>
+				<ref name="number-currency-style"/>
+			</zeroOrMore>
+			<zeroOrMore>
+				<ref name="number-percentage-style"/>
+			</zeroOrMore>
+			<zeroOrMore>
+				<ref name="number-date-style"/>
+			</zeroOrMore>
+			<zeroOrMore>
+				<ref name="number-time-style"/>
+			</zeroOrMore>
+			<zeroOrMore>
+				<ref name="number-boolean-style"/>
+			</zeroOrMore>
+			<zeroOrMore>
+				<ref name="number-text-style"/>
+			</zeroOrMore>
+		</interleave>
+	</define>
+	<define name="office-meta-data">
+		<choice>
+			<element name="meta:generator">
+				<ref name="string"/>
+			</element>
+			<element name="dc:title">
+				<ref name="string"/>
+			</element>
+			<element name="dc:description">
+				<ref name="string"/>
+			</element>
+			<element name="dc:subject">
+				<ref name="string"/>
+			</element>
+			<element name="meta:keyword">
+				<ref name="string"/>
+			</element>
+			<element name="meta:initial-creator">
+				<ref name="string"/>
+			</element>
+			<ref name="dc-creator"/>
+			<element name="meta:printed-by">
+				<ref name="string"/>
+			</element>
+			<element name="meta:creation-date">
+				<ref name="dateTime"/>
+			</element>
+			<ref name="dc-date"/>
+			<element name="meta:print-date">
+				<ref name="dateTime"/>
+			</element>
+			<element name="meta:template">
+				<attribute name="xlink:type">
+					<value>simple</value>
+				</attribute>
+				<attribute name="xlink:href">
+					<ref name="anyIRI"/>
+				</attribute>
+				<optional>
+					<attribute name="xlink:actuate">
+						<value>onRequest</value>
+					</attribute>
+				</optional>
+				<optional>
+					<attribute name="xlink:title">
+						<ref name="string"/>
+					</attribute>
+				</optional>
+				<optional>
+					<attribute name="meta:date">
+						<ref name="dateTime"/>
+					</attribute>
+				</optional>
+			</element>
+			<element name="meta:auto-reload">
+				<optional>
+					<attribute name="xlink:type">
+						<value>simple</value>
+					</attribute>
+					<attribute name="xlink:href">
+						<ref name="anyIRI"/>
+					</attribute>
+					<optional>
+						<attribute name="xlink:show">
+							<value>replace</value>
+						</attribute>
+					</optional>
+					<optional>
+						<attribute name="xlink:actuate">
+							<value>onLoad</value>
+						</attribute>
+					</optional>
+				</optional>
+				<optional>
+					<attribute name="meta:delay">
+						<ref name="duration"/>
+					</attribute>
+				</optional>
+			</element>
+			<element name="meta:hyperlink-behaviour">
+				<optional>
+					<attribute name="office:target-frame-name">
+						<ref name="targetFrameName"/>
+					</attribute>
+				</optional>
+				<optional>
+					<attribute name="xlink:show">
+						<choice>
+							<value>new</value>
+							<value>replace</value>
+						</choice>
+					</attribute>
+				</optional>
+			</element>
+			<element name="dc:language">
+				<ref name="language"/>
+			</element>
+			<element name="meta:editing-cycles">
+				<ref name="nonNegativeInteger"/>
+			</element>
+			<element name="meta:editing-duration">
+				<ref name="duration"/>
+			</element>
+			<element name="meta:document-statistic">
+				<optional>
+					<attribute name="meta:page-count">
+						<ref name="nonNegativeInteger"/>
+					</attribute>
+				</optional>
+				<optional>
+					<attribute name="meta:table-count">
+						<ref name="nonNegativeInteger"/>
+					</attribute>
+				</optional>
+				<optional>
+					<attribute name="meta:draw-count">
+						<ref name="nonNegativeInteger"/>
+					</attribute>
+				</optional>
+				<optional>
+					<attribute name="meta:image-count">
+						<ref name="nonNegativeInteger"/>
+					</attribute>
+				</optional>
+				<optional>
+					<attribute name="meta:ole-object-count">
+						<ref name="nonNegativeInteger"/>
+					</attribute>
+				</optional>
+				<optional>
+					<attribute name="meta:object-count">
+						<ref name="nonNegativeInteger"/>
+					</attribute>
+				</optional>
+				<optional>
+					<attribute name="meta:paragraph-count">
+						<ref name="nonNegativeInteger"/>
+					</attribute>
+				</optional>
+				<optional>
+					<attribute name="meta:word-count">
+						<ref name="nonNegativeInteger"/>
+					</attribute>
+				</optional>
+				<optional>
+					<attribute name="meta:character-count">
+						<ref name="nonNegativeInteger"/>
+					</attribute>
+				</optional>
+				<optional>
+					<attribute name="meta:frame-count">
+						<ref name="nonNegativeInteger"/>
+					</attribute>
+				</optional>
+				<optional>
+					<attribute name="meta:sentence-count">
+						<ref name="nonNegativeInteger"/>
+					</attribute>
+				</optional>
+				<optional>
+					<attribute name="meta:syllable-count">
+						<ref name="nonNegativeInteger"/>
+					</attribute>
+				</optional>
+				<optional>
+					<attribute name="meta:non-whitespace-character-count">
+						<ref name="nonNegativeInteger"/>
+					</attribute>
+				</optional>
+				<optional>
+					<attribute name="meta:row-count">
+						<ref name="nonNegativeInteger"/>
+					</attribute>
+				</optional>
+				<optional>
+					<attribute name="meta:cell-count">
+						<ref name="nonNegativeInteger"/>
+					</attribute>
+				</optional>
+			</element>
+			<element name="meta:user-defined">
+				<attribute name="meta:name">
+					<ref name="string"/>
+				</attribute>
+				<choice>
+					<group>
+						<attribute name="meta:value-type">
+							<value>float</value>
+						</attribute>
+						<ref name="double"/>
+					</group>
+					<group>
+						<attribute name="meta:value-type">
+							<value>date</value>
+						</attribute>
+						<ref name="dateOrDateTime"/>
+					</group>
+					<group>
+						<attribute name="meta:value-type">
+							<value>time</value>
+						</attribute>
+						<ref name="duration"/>
+					</group>
+					<group>
+						<attribute name="meta:value-type">
+							<value>boolean</value>
+						</attribute>
+						<ref name="boolean"/>
+					</group>
+					<group>
+						<attribute name="meta:value-type">
+							<value>string</value>
+						</attribute>
+						<ref name="string"/>
+					</group>
+					<text/>
+				</choice>
+			</element>
+		</choice>
+	</define>
+	<define name="dc-creator">
+		<element name="dc:creator">
+			<ref name="string"/>
+		</element>
+	</define>
+	<define name="dc-date">
+		<element name="dc:date">
+			<ref name="dateTime"/>
+		</element>
+	</define>
+	<define name="text-h">
+		<element name="text:h">
+			<ref name="heading-attrs"/>
+			<ref name="paragraph-attrs"/>
+			<optional>
+				<ref name="text-number"/>
+			</optional>
+			<zeroOrMore>
+				<ref name="paragraph-content-or-hyperlink"/>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="heading-attrs">
+		<interleave>
+			<attribute name="text:outline-level">
+				<ref name="positiveInteger"/>
+			</attribute>
+			<optional>
+				<attribute name="text:restart-numbering">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:start-value">
+					<ref name="nonNegativeInteger"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:is-list-header">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="text-number">
+		<element name="text:number">
+			<ref name="string"/>
+		</element>
+	</define>
+	<define name="text-p">
+		<element name="text:p">
+			<ref name="paragraph-attrs"/>
+			<zeroOrMore>
+				<ref name="paragraph-content-or-hyperlink"/>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="paragraph-attrs">
+		<interleave>
+			<optional>
+				<attribute name="text:style-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:class-names">
+					<ref name="styleNameRefs"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:cond-style-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+			<optional>
+				<group>
+					<ref name="xml-id"/>
+					<optional>
+						<attribute name="text:id">
+							<ref name="NCName"/>
+						</attribute>
+					</optional>
+				</group>
+			</optional>
+			<optional>
+				<ref name="common-in-content-meta-attlist"/>
+			</optional>
+		</interleave>
+	</define>
+	<define name="text-page-sequence">
+		<element name="text:page-sequence">
+			<oneOrMore>
+				<ref name="text-page"/>
+			</oneOrMore>
+		</element>
+	</define>
+	<define name="text-page">
+		<element name="text:page">
+			<ref name="text-page-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="text-page-attlist">
+		<attribute name="text:master-page-name">
+			<ref name="styleNameRef"/>
+		</attribute>
+	</define>
+	<define name="text-list">
+		<element name="text:list">
+			<ref name="text-list-attr"/>
+			<optional>
+				<ref name="text-list-header"/>
+			</optional>
+			<zeroOrMore>
+				<ref name="text-list-item"/>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="text-list-attr">
+		<interleave>
+			<optional>
+				<attribute name="text:style-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:continue-numbering">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:continue-list">
+					<ref name="IDREF"/>
+				</attribute>
+			</optional>
+			<optional>
+				<ref name="xml-id"/>
+			</optional>
+		</interleave>
+	</define>
+	<define name="text-list-item">
+		<element name="text:list-item">
+			<ref name="text-list-item-attr"/>
+			<ref name="text-list-item-content"/>
+		</element>
+	</define>
+	<define name="text-list-item-content">
+		<optional>
+			<ref name="text-number"/>
+		</optional>
+		<zeroOrMore>
+			<choice>
+				<ref name="text-p"/>
+				<ref name="text-h"/>
+				<ref name="text-list"/>
+				<ref name="text-soft-page-break"/>
+			</choice>
+		</zeroOrMore>
+	</define>
+	<define name="text-list-item-attr">
+		<interleave>
+			<optional>
+				<attribute name="text:start-value">
+					<ref name="nonNegativeInteger"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:style-override">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+			<optional>
+				<ref name="xml-id"/>
+			</optional>
+		</interleave>
+	</define>
+	<define name="text-list-header">
+		<element name="text:list-header">
+			<ref name="text-list-header-attr"/>
+			<ref name="text-list-item-content"/>
+		</element>
+	</define>
+	<define name="text-list-header-attr">
+		<optional>
+			<ref name="xml-id"/>
+		</optional>
+	</define>
+	<define name="text-numbered-paragraph">
+		<element name="text:numbered-paragraph">
+			<ref name="text-numbered-paragraph-attr"/>
+			<optional>
+				<ref name="text-number"/>
+			</optional>
+			<choice>
+				<ref name="text-p"/>
+				<ref name="text-h"/>
+			</choice>
+		</element>
+	</define>
+	<define name="text-numbered-paragraph-attr">
+		<interleave>
+			<attribute name="text:list-id">
+				<ref name="NCName"/>
+			</attribute>
+			<optional>
+				<attribute name="text:level">
+					<ref name="positiveInteger"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:style-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+				<attribute name="text:continue-numbering">
+					<ref name="boolean"/>
+				</attribute>
+				<attribute name="text:start-value">
+					<ref name="nonNegativeInteger"/>
+				</attribute>
+			</optional>
+			<optional>
+				<ref name="xml-id"/>
+			</optional>
+		</interleave>
+	</define>
+	<define name="text-section">
+		<element name="text:section">
+			<ref name="text-section-attlist"/>
+			<choice>
+				<ref name="text-section-source"/>
+				<ref name="text-section-source-dde"/>
+				<empty/>
+			</choice>
+			<zeroOrMore>
+				<ref name="text-content"/>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="text-section-attlist">
+		<interleave>
+			<ref name="common-section-attlist"/>
+			<choice>
+				<attribute name="text:display">
+					<choice>
+						<value>true</value>
+						<value>none</value>
+					</choice>
+				</attribute>
+				<group>
+					<attribute name="text:display">
+						<value>condition</value>
+					</attribute>
+					<attribute name="text:condition">
+						<ref name="string"/>
+					</attribute>
+				</group>
+				<empty/>
+			</choice>
+		</interleave>
+	</define>
+	<define name="common-section-attlist">
+		<interleave>
+			<optional>
+				<attribute name="text:style-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+			<attribute name="text:name">
+				<ref name="string"/>
+			</attribute>
+			<optional>
+				<attribute name="text:protected">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:protection-key">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:protection-key-digest-algorithm">
+					<ref name="anyIRI"/>
+				</attribute>
+			</optional>
+			<optional>
+				<ref name="xml-id"/>
+			</optional>
+		</interleave>
+	</define>
+	<define name="text-section-source">
+		<element name="text:section-source">
+			<ref name="text-section-source-attr"/>
+		</element>
+	</define>
+	<define name="text-section-source-attr">
+		<interleave>
+			<optional>
+				<attribute name="xlink:type">
+					<value>simple</value>
+				</attribute>
+				<attribute name="xlink:href">
+					<ref name="anyIRI"/>
+				</attribute>
+				<optional>
+					<attribute name="xlink:show">
+						<value>embed</value>
+					</attribute>
+				</optional>
+			</optional>
+			<optional>
+				<attribute name="text:section-name">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:filter-name">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="text-section-source-dde">
+		<ref name="office-dde-source"/>
+	</define>
+	<define name="text-tracked-changes">
+		<optional>
+			<element name="text:tracked-changes">
+				<ref name="text-tracked-changes-attr"/>
+				<zeroOrMore>
+					<ref name="text-changed-region"/>
+				</zeroOrMore>
+			</element>
+		</optional>
+	</define>
+	<define name="text-tracked-changes-attr">
+		<optional>
+			<attribute name="text:track-changes">
+				<ref name="boolean"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="text-changed-region">
+		<element name="text:changed-region">
+			<ref name="text-changed-region-attr"/>
+			<ref name="text-changed-region-content"/>
+		</element>
+	</define>
+	<define name="text-changed-region-attr">
+		<group>
+			<ref name="xml-id"/>
+			<optional>
+				<attribute name="text:id">
+					<ref name="NCName"/>
+				</attribute>
+			</optional>
+		</group>
+	</define>
+	<define name="text-changed-region-content">
+		<choice>
+			<element name="text:insertion">
+				<ref name="office-change-info"/>
+			</element>
+			<element name="text:deletion">
+				<ref name="office-change-info"/>
+				<zeroOrMore>
+					<ref name="text-content"/>
+				</zeroOrMore>
+			</element>
+			<element name="text:format-change">
+				<ref name="office-change-info"/>
+			</element>
+		</choice>
+	</define>
+	<define name="change-marks">
+		<choice>
+			<element name="text:change">
+				<ref name="change-mark-attr"/>
+			</element>
+			<element name="text:change-start">
+				<ref name="change-mark-attr"/>
+			</element>
+			<element name="text:change-end">
+				<ref name="change-mark-attr"/>
+			</element>
+		</choice>
+	</define>
+	<define name="change-mark-attr">
+		<attribute name="text:change-id">
+			<ref name="IDREF"/>
+		</attribute>
+	</define>
+	<define name="text-soft-page-break">
+		<element name="text:soft-page-break">
+			<empty/>
+		</element>
+	</define>
+	<define name="text-decls">
+		<optional>
+			<element name="text:variable-decls">
+				<zeroOrMore>
+					<ref name="text-variable-decl"/>
+				</zeroOrMore>
+			</element>
+		</optional>
+		<optional>
+			<element name="text:sequence-decls">
+				<zeroOrMore>
+					<ref name="text-sequence-decl"/>
+				</zeroOrMore>
+			</element>
+		</optional>
+		<optional>
+			<element name="text:user-field-decls">
+				<zeroOrMore>
+					<ref name="text-user-field-decl"/>
+				</zeroOrMore>
+			</element>
+		</optional>
+		<optional>
+			<element name="text:dde-connection-decls">
+				<zeroOrMore>
+					<ref name="text-dde-connection-decl"/>
+				</zeroOrMore>
+			</element>
+		</optional>
+		<optional>
+			<ref name="text-alphabetical-index-auto-mark-file"/>
+		</optional>
+	</define>
+	<define name="paragraph-content-or-hyperlink">
+		<choice>
+			<ref name="paragraph-content"/>
+			<ref name="text-a"/>
+		</choice>
+	</define>
+	<define name="paragraph-content">
+		<choice>
+			<text/>
+			<element name="text:s">
+				<optional>
+					<attribute name="text:c">
+						<ref name="nonNegativeInteger"/>
+					</attribute>
+				</optional>
+			</element>
+			<element name="text:tab">
+				<ref name="text-tab-attr"/>
+			</element>
+			<element name="text:line-break">
+				<empty/>
+			</element>
+			<ref name="text-soft-page-break"/>
+			<element name="text:span">
+				<optional>
+					<attribute name="text:style-name">
+						<ref name="styleNameRef"/>
+					</attribute>
+				</optional>
+				<optional>
+					<attribute name="text:class-names">
+						<ref name="styleNameRefs"/>
+					</attribute>
+				</optional>
+				<zeroOrMore>
+					<ref name="paragraph-content-or-hyperlink"/>
+				</zeroOrMore>
+			</element>
+			<element name="text:meta">
+				<ref name="text-meta-attlist"/>
+				<zeroOrMore>
+					<ref name="paragraph-content-or-hyperlink"/>
+				</zeroOrMore>
+			</element>
+			<choice>
+				<ref name="text-bookmark"/>
+				<ref name="text-bookmark-start"/>
+				<ref name="text-bookmark-end"/>
+			</choice>
+			<element name="text:reference-mark">
+				<attribute name="text:name">
+					<ref name="string"/>
+				</attribute>
+			</element>
+			<choice>
+				<element name="text:reference-mark-start">
+					<attribute name="text:name">
+						<ref name="string"/>
+					</attribute>
+				</element>
+				<element name="text:reference-mark-end">
+					<attribute name="text:name">
+						<ref name="string"/>
+					</attribute>
+				</element>
+			</choice>
+			<element name="text:note">
+				<ref name="text-note-class"/>
+				<optional>
+					<attribute name="text:id">
+						<ref name="string"/>
+					</attribute>
+				</optional>
+				<element name="text:note-citation">
+					<optional>
+						<attribute name="text:label">
+							<ref name="string"/>
+						</attribute>
+					</optional>
+					<text/>
+				</element>
+				<element name="text:note-body">
+					<zeroOrMore>
+						<ref name="text-content"/>
+					</zeroOrMore>
+				</element>
+			</element>
+			<element name="text:ruby">
+				<optional>
+					<attribute name="text:style-name">
+						<ref name="styleNameRef"/>
+					</attribute>
+				</optional>
+				<element name="text:ruby-base">
+					<zeroOrMore>
+						<ref name="paragraph-content-or-hyperlink"/>
+					</zeroOrMore>
+				</element>
+				<element name="text:ruby-text">
+					<optional>
+						<attribute name="text:style-name">
+							<ref name="styleNameRef"/>
+						</attribute>
+					</optional>
+					<text/>
+				</element>
+			</element>
+			<choice>
+				<ref name="office-annotation"/>
+				<ref name="office-annotation-end"/>
+			</choice>
+			<ref name="change-marks"/>
+			<ref name="shape"/>
+			<element name="text:date">
+				<ref name="text-date-attlist"/>
+				<text/>
+			</element>
+			<element name="text:time">
+				<ref name="text-time-attlist"/>
+				<text/>
+			</element>
+			<element name="text:page-number">
+				<ref name="text-page-number-attlist"/>
+				<text/>
+			</element>
+			<element name="text:page-continuation">
+				<ref name="text-page-continuation-attlist"/>
+				<text/>
+			</element>
+			<element name="text:sender-firstname">
+				<ref name="common-field-fixed-attlist"/>
+				<text/>
+			</element>
+			<element name="text:sender-lastname">
+				<ref name="common-field-fixed-attlist"/>
+				<text/>
+			</element>
+			<element name="text:sender-initials">
+				<ref name="common-field-fixed-attlist"/>
+				<text/>
+			</element>
+			<element name="text:sender-title">
+				<ref name="common-field-fixed-attlist"/>
+				<text/>
+			</element>
+			<element name="text:sender-position">
+				<ref name="common-field-fixed-attlist"/>
+				<text/>
+			</element>
+			<element name="text:sender-email">
+				<ref name="common-field-fixed-attlist"/>
+				<text/>
+			</element>
+			<element name="text:sender-phone-private">
+				<ref name="common-field-fixed-attlist"/>
+				<text/>
+			</element>
+			<element name="text:sender-fax">
+				<ref name="common-field-fixed-attlist"/>
+				<text/>
+			</element>
+			<element name="text:sender-company">
+				<ref name="common-field-fixed-attlist"/>
+				<text/>
+			</element>
+			<element name="text:sender-phone-work">
+				<ref name="common-field-fixed-attlist"/>
+				<text/>
+			</element>
+			<element name="text:sender-street">
+				<ref name="common-field-fixed-attlist"/>
+				<text/>
+			</element>
+			<element name="text:sender-city">
+				<ref name="common-field-fixed-attlist"/>
+				<text/>
+			</element>
+			<element name="text:sender-postal-code">
+				<ref name="common-field-fixed-attlist"/>
+				<text/>
+			</element>
+			<element name="text:sender-country">
+				<ref name="common-field-fixed-attlist"/>
+				<text/>
+			</element>
+			<element name="text:sender-state-or-province">
+				<ref name="common-field-fixed-attlist"/>
+				<text/>
+			</element>
+			<element name="text:author-name">
+				<ref name="common-field-fixed-attlist"/>
+				<text/>
+			</element>
+			<element name="text:author-initials">
+				<ref name="common-field-fixed-attlist"/>
+				<text/>
+			</element>
+			<element name="text:chapter">
+				<ref name="text-chapter-attlist"/>
+				<text/>
+			</element>
+			<element name="text:file-name">
+				<ref name="text-file-name-attlist"/>
+				<text/>
+			</element>
+			<element name="text:template-name">
+				<ref name="text-template-name-attlist"/>
+				<text/>
+			</element>
+			<element name="text:sheet-name">
+				<text/>
+			</element>
+			<element name="text:variable-set">
+				<interleave>
+					<ref name="common-field-name-attlist"/>
+					<ref name="common-field-formula-attlist"/>
+					<ref name="common-value-and-type-attlist"/>
+					<ref name="common-field-display-value-none-attlist"/>
+					<ref name="common-field-data-style-name-attlist"/>
+				</interleave>
+				<text/>
+			</element>
+			<element name="text:variable-get">
+				<interleave>
+					<ref name="common-field-name-attlist"/>
+					<ref name="common-field-display-value-formula-attlist"/>
+					<ref name="common-field-data-style-name-attlist"/>
+				</interleave>
+				<text/>
+			</element>
+			<element name="text:variable-input">
+				<interleave>
+					<ref name="common-field-name-attlist"/>
+					<ref name="common-field-description-attlist"/>
+					<ref name="common-value-type-attlist"/>
+					<ref name="common-field-display-value-none-attlist"/>
+					<ref name="common-field-data-style-name-attlist"/>
+				</interleave>
+				<text/>
+			</element>
+			<element name="text:user-field-get">
+				<interleave>
+					<ref name="common-field-name-attlist"/>
+					<ref name="common-field-display-value-formula-none-attlist"/>
+					<ref name="common-field-data-style-name-attlist"/>
+				</interleave>
+				<text/>
+			</element>
+			<element name="text:user-field-input">
+				<interleave>
+					<ref name="common-field-name-attlist"/>
+					<ref name="common-field-description-attlist"/>
+					<ref name="common-field-data-style-name-attlist"/>
+				</interleave>
+				<text/>
+			</element>
+			<element name="text:sequence">
+				<interleave>
+					<ref name="common-field-name-attlist"/>
+					<ref name="common-field-formula-attlist"/>
+					<ref name="common-field-num-format-attlist"/>
+					<ref name="text-sequence-ref-name"/>
+				</interleave>
+				<text/>
+			</element>
+			<element name="text:expression">
+				<interleave>
+					<ref name="common-field-formula-attlist"/>
+					<optional>
+						<ref name="common-value-and-type-attlist"/>
+					</optional>
+					<ref name="common-field-display-value-formula-attlist"/>
+					<ref name="common-field-data-style-name-attlist"/>
+				</interleave>
+				<text/>
+			</element>
+			<element name="text:text-input">
+				<ref name="common-field-description-attlist"/>
+				<text/>
+			</element>
+			<element name="text:initial-creator">
+				<ref name="common-field-fixed-attlist"/>
+				<text/>
+			</element>
+			<element name="text:creation-date">
+				<interleave>
+					<ref name="common-field-fixed-attlist"/>
+					<ref name="common-field-data-style-name-attlist"/>
+					<optional>
+						<attribute name="text:date-value">
+							<ref name="dateOrDateTime"/>
+						</attribute>
+					</optional>
+				</interleave>
+				<text/>
+			</element>
+			<element name="text:creation-time">
+				<interleave>
+					<ref name="common-field-fixed-attlist"/>
+					<ref name="common-field-data-style-name-attlist"/>
+					<optional>
+						<attribute name="text:time-value">
+							<ref name="timeOrDateTime"/>
+						</attribute>
+					</optional>
+				</interleave>
+				<text/>
+			</element>
+			<element name="text:description">
+				<ref name="common-field-fixed-attlist"/>
+				<text/>
+			</element>
+			<element name="text:user-defined">
+				<interleave>
+					<ref name="common-field-fixed-attlist"/>
+					<attribute name="text:name">
+						<ref name="string"/>
+					</attribute>
+					<ref name="common-field-data-style-name-attlist"/>
+					<optional>
+						<attribute name="office:value">
+							<ref name="double"/>
+						</attribute>
+					</optional>
+					<optional>
+						<attribute name="office:date-value">
+							<ref name="dateOrDateTime"/>
+						</attribute>
+					</optional>
+					<optional>
+						<attribute name="office:time-value">
+							<ref name="duration"/>
+						</attribute>
+					</optional>
+					<optional>
+						<attribute name="office:boolean-value">
+							<ref name="boolean"/>
+						</attribute>
+					</optional>
+					<optional>
+						<attribute name="office:string-value">
+							<ref name="string"/>
+						</attribute>
+					</optional>
+				</interleave>
+				<text/>
+			</element>
+			<element name="text:print-time">
+				<interleave>
+					<ref name="common-field-fixed-attlist"/>
+					<ref name="common-field-data-style-name-attlist"/>
+					<optional>
+						<attribute name="text:time-value">
+							<ref name="time"/>
+						</attribute>
+					</optional>
+				</interleave>
+				<text/>
+			</element>
+			<element name="text:print-date">
+				<interleave>
+					<ref name="common-field-fixed-attlist"/>
+					<ref name="common-field-data-style-name-attlist"/>
+					<optional>
+						<attribute name="text:date-value">
+							<ref name="date"/>
+						</attribute>
+					</optional>
+				</interleave>
+				<text/>
+			</element>
+			<element name="text:printed-by">
+				<ref name="common-field-fixed-attlist"/>
+				<text/>
+			</element>
+			<element name="text:title">
+				<ref name="common-field-fixed-attlist"/>
+				<text/>
+			</element>
+			<element name="text:subject">
+				<ref name="common-field-fixed-attlist"/>
+				<text/>
+			</element>
+			<element name="text:keywords">
+				<ref name="common-field-fixed-attlist"/>
+				<text/>
+			</element>
+			<element name="text:editing-cycles">
+				<ref name="common-field-fixed-attlist"/>
+				<text/>
+			</element>
+			<element name="text:editing-duration">
+				<interleave>
+					<ref name="common-field-fixed-attlist"/>
+					<ref name="common-field-data-style-name-attlist"/>
+					<optional>
+						<attribute name="text:duration">
+							<ref name="duration"/>
+						</attribute>
+					</optional>
+				</interleave>
+				<text/>
+			</element>
+			<element name="text:modification-time">
+				<interleave>
+					<ref name="common-field-fixed-attlist"/>
+					<ref name="common-field-data-style-name-attlist"/>
+					<optional>
+						<attribute name="text:time-value">
+							<ref name="time"/>
+						</attribute>
+					</optional>
+				</interleave>
+				<text/>
+			</element>
+			<element name="text:modification-date">
+				<interleave>
+					<ref name="common-field-fixed-attlist"/>
+					<ref name="common-field-data-style-name-attlist"/>
+					<optional>
+						<attribute name="text:date-value">
+							<ref name="date"/>
+						</attribute>
+					</optional>
+				</interleave>
+				<text/>
+			</element>
+			<element name="text:creator">
+				<ref name="common-field-fixed-attlist"/>
+				<text/>
+			</element>
+			<element>
+				<choice>
+					<name>text:page-count</name>
+					<name>text:paragraph-count</name>
+					<name>text:word-count</name>
+					<name>text:character-count</name>
+					<name>text:table-count</name>
+					<name>text:image-count</name>
+					<name>text:object-count</name>
+				</choice>
+				<ref name="common-field-num-format-attlist"/>
+				<text/>
+			</element>
+			<element name="text:database-display">
+				<ref name="text-database-display-attlist"/>
+				<text/>
+			</element>
+			<element name="text:database-next">
+				<ref name="text-database-next-attlist"/>
+			</element>
+			<element name="text:database-row-select">
+				<ref name="text-database-row-select-attlist"/>
+			</element>
+			<element name="text:database-row-number">
+				<interleave>
+					<ref name="common-field-database-table"/>
+					<ref name="common-field-num-format-attlist"/>
+					<optional>
+						<attribute name="text:value">
+							<ref name="nonNegativeInteger"/>
+						</attribute>
+					</optional>
+				</interleave>
+				<text/>
+			</element>
+			<element name="text:database-name">
+				<ref name="common-field-database-table"/>
+				<text/>
+			</element>
+			<element name="text:page-variable-set">
+				<ref name="text-set-page-variable-attlist"/>
+				<text/>
+			</element>
+			<element name="text:page-variable-get">
+				<ref name="text-get-page-variable-attlist"/>
+				<text/>
+			</element>
+			<element name="text:placeholder">
+				<ref name="text-placeholder-attlist"/>
+				<text/>
+			</element>
+			<element name="text:conditional-text">
+				<ref name="text-conditional-text-attlist"/>
+				<text/>
+			</element>
+			<element name="text:hidden-text">
+				<ref name="text-hidden-text-attlist"/>
+				<text/>
+			</element>
+			<element>
+				<choice>
+					<name>text:reference-ref</name>
+					<name>text:bookmark-ref</name>
+				</choice>
+				<interleave>
+					<ref name="text-common-ref-content"/>
+					<ref name="text-bookmark-ref-content"/>
+				</interleave>
+			</element>
+			<element name="text:note-ref">
+				<interleave>
+					<ref name="text-common-ref-content"/>
+					<ref name="text-note-ref-content"/>
+				</interleave>
+			</element>
+			<element name="text:sequence-ref">
+				<interleave>
+					<ref name="text-common-ref-content"/>
+					<ref name="text-sequence-ref-content"/>
+				</interleave>
+			</element>
+			<element name="text:script">
+				<interleave>
+					<choice>
+						<group>
+							<attribute name="xlink:type">
+								<value>simple</value>
+							</attribute>
+							<attribute name="xlink:href">
+								<ref name="anyIRI"/>
+							</attribute>
+						</group>
+						<text/>
+					</choice>
+					<optional>
+						<attribute name="script:language">
+							<ref name="string"/>
+						</attribute>
+					</optional>
+				</interleave>
+			</element>
+			<element name="text:execute-macro">
+				<optional>
+					<attribute name="text:name">
+						<ref name="string"/>
+					</attribute>
+				</optional>
+				<optional>
+					<ref name="office-event-listeners"/>
+				</optional>
+				<text/>
+			</element>
+			<element name="text:hidden-paragraph">
+				<ref name="text-hidden-paragraph-attlist"/>
+				<text/>
+			</element>
+			<element name="text:dde-connection">
+				<attribute name="text:connection-name">
+					<ref name="string"/>
+				</attribute>
+				<text/>
+			</element>
+			<element name="text:measure">
+				<attribute name="text:kind">
+					<choice>
+						<value>value</value>
+						<value>unit</value>
+						<value>gap</value>
+					</choice>
+				</attribute>
+				<text/>
+			</element>
+			<element name="text:table-formula">
+				<interleave>
+					<ref name="common-field-formula-attlist"/>
+					<ref name="common-field-display-value-formula-attlist"/>
+					<ref name="common-field-data-style-name-attlist"/>
+				</interleave>
+				<text/>
+			</element>
+			<element name="text:meta-field">
+				<ref name="text-meta-field-attlist"/>
+				<zeroOrMore>
+					<ref name="paragraph-content-or-hyperlink"/>
+				</zeroOrMore>
+			</element>
+			<element name="text:toc-mark-start">
+				<ref name="text-toc-mark-start-attrs"/>
+			</element>
+			<element name="text:toc-mark-end">
+				<ref name="text-id"/>
+			</element>
+			<element name="text:toc-mark">
+				<attribute name="text:string-value">
+					<ref name="string"/>
+				</attribute>
+				<ref name="text-outline-level"/>
+			</element>
+			<element name="text:user-index-mark-start">
+				<ref name="text-id"/>
+				<ref name="text-outline-level"/>
+				<ref name="text-index-name"/>
+			</element>
+			<element name="text:user-index-mark-end">
+				<ref name="text-id"/>
+			</element>
+			<element name="text:user-index-mark">
+				<attribute name="text:string-value">
+					<ref name="string"/>
+				</attribute>
+				<ref name="text-outline-level"/>
+				<ref name="text-index-name"/>
+			</element>
+			<element name="text:alphabetical-index-mark-start">
+				<ref name="text-id"/>
+				<ref name="text-alphabetical-index-mark-attrs"/>
+			</element>
+			<element name="text:alphabetical-index-mark-end">
+				<ref name="text-id"/>
+			</element>
+			<element name="text:alphabetical-index-mark">
+				<attribute name="text:string-value">
+					<ref name="string"/>
+				</attribute>
+				<ref name="text-alphabetical-index-mark-attrs"/>
+			</element>
+			<element name="text:bibliography-mark">
+				<attribute name="text:bibliography-type">
+					<ref name="text-bibliography-types"/>
+				</attribute>
+				<zeroOrMore>
+					<attribute>
+						<choice>
+							<name>text:identifier</name>
+							<name>text:address</name>
+							<name>text:annote</name>
+							<name>text:author</name>
+							<name>text:booktitle</name>
+							<name>text:chapter</name>
+							<name>text:edition</name>
+							<name>text:editor</name>
+							<name>text:howpublished</name>
+							<name>text:institution</name>
+							<name>text:journal</name>
+							<name>text:month</name>
+							<name>text:note</name>
+							<name>text:number</name>
+							<name>text:organizations</name>
+							<name>text:pages</name>
+							<name>text:publisher</name>
+							<name>text:school</name>
+							<name>text:series</name>
+							<name>text:title</name>
+							<name>text:report-type</name>
+							<name>text:volume</name>
+							<name>text:year</name>
+							<name>text:url</name>
+							<name>text:custom1</name>
+							<name>text:custom2</name>
+							<name>text:custom3</name>
+							<name>text:custom4</name>
+							<name>text:custom5</name>
+							<name>text:isbn</name>
+							<name>text:issn</name>
+						</choice>
+						<ref name="string"/>
+					</attribute>
+				</zeroOrMore>
+				<text/>
+			</element>
+			<element name="presentation:header">
+				<empty/>
+			</element>
+			<element name="presentation:footer">
+				<empty/>
+			</element>
+			<element name="presentation:date-time">
+				<empty/>
+			</element>
+		</choice>
+	</define>
+	<define name="text-tab-attr">
+		<optional>
+			<attribute name="text:tab-ref">
+				<ref name="nonNegativeInteger"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="text-a">
+		<element name="text:a">
+			<ref name="text-a-attlist"/>
+			<optional>
+				<ref name="office-event-listeners"/>
+			</optional>
+			<zeroOrMore>
+				<ref name="paragraph-content"/>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="text-a-attlist">
+		<interleave>
+			<optional>
+				<attribute name="office:name">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="office:title">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<attribute name="xlink:type">
+				<value>simple</value>
+			</attribute>
+			<attribute name="xlink:href">
+				<ref name="anyIRI"/>
+			</attribute>
+			<optional>
+				<attribute name="xlink:actuate">
+					<value>onRequest</value>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="office:target-frame-name">
+					<ref name="targetFrameName"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="xlink:show">
+					<choice>
+						<value>new</value>
+						<value>replace</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:style-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:visited-style-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="text-meta-attlist">
+		<interleave>
+			<optional>
+				<ref name="common-in-content-meta-attlist"/>
+			</optional>
+			<optional>
+				<ref name="xml-id"/>
+			</optional>
+		</interleave>
+	</define>
+	<define name="text-bookmark">
+		<element name="text:bookmark">
+			<ref name="text-bookmark-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="text-bookmark-start">
+		<element name="text:bookmark-start">
+			<ref name="text-bookmark-start-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="text-bookmark-end">
+		<element name="text:bookmark-end">
+			<ref name="text-bookmark-end-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="text-bookmark-attlist">
+		<interleave>
+			<attribute name="text:name">
+				<ref name="string"/>
+			</attribute>
+			<optional>
+				<ref name="xml-id"/>
+			</optional>
+		</interleave>
+	</define>
+	<define name="text-bookmark-start-attlist">
+		<interleave>
+			<attribute name="text:name">
+				<ref name="string"/>
+			</attribute>
+			<optional>
+				<ref name="xml-id"/>
+			</optional>
+			<optional>
+				<ref name="common-in-content-meta-attlist"/>
+			</optional>
+		</interleave>
+	</define>
+	<define name="text-bookmark-end-attlist">
+		<attribute name="text:name">
+			<ref name="string"/>
+		</attribute>
+	</define>
+	<define name="text-note-class">
+		<attribute name="text:note-class">
+			<choice>
+				<value>footnote</value>
+				<value>endnote</value>
+			</choice>
+		</attribute>
+	</define>
+	<define name="text-date-attlist">
+		<interleave>
+			<interleave>
+				<ref name="common-field-fixed-attlist"/>
+				<ref name="common-field-data-style-name-attlist"/>
+			</interleave>
+			<optional>
+				<attribute name="text:date-value">
+					<ref name="dateOrDateTime"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:date-adjust">
+					<ref name="duration"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="text-time-attlist">
+		<interleave>
+			<interleave>
+				<ref name="common-field-fixed-attlist"/>
+				<ref name="common-field-data-style-name-attlist"/>
+			</interleave>
+			<optional>
+				<attribute name="text:time-value">
+					<ref name="timeOrDateTime"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:time-adjust">
+					<ref name="duration"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="text-page-number-attlist">
+		<interleave>
+			<interleave>
+				<ref name="common-field-num-format-attlist"/>
+				<ref name="common-field-fixed-attlist"/>
+			</interleave>
+			<optional>
+				<attribute name="text:page-adjust">
+					<ref name="integer"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:select-page">
+					<choice>
+						<value>previous</value>
+						<value>current</value>
+						<value>next</value>
+					</choice>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="text-page-continuation-attlist">
+		<interleave>
+			<attribute name="text:select-page">
+				<choice>
+					<value>previous</value>
+					<value>next</value>
+				</choice>
+			</attribute>
+			<optional>
+				<attribute name="text:string-value">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="text-chapter-attlist">
+		<interleave>
+			<attribute name="text:display">
+				<choice>
+					<value>name</value>
+					<value>number</value>
+					<value>number-and-name</value>
+					<value>plain-number-and-name</value>
+					<value>plain-number</value>
+				</choice>
+			</attribute>
+			<attribute name="text:outline-level">
+				<ref name="nonNegativeInteger"/>
+			</attribute>
+		</interleave>
+	</define>
+	<define name="text-file-name-attlist">
+		<interleave>
+			<optional>
+				<attribute name="text:display">
+					<choice>
+						<value>full</value>
+						<value>path</value>
+						<value>name</value>
+						<value>name-and-extension</value>
+					</choice>
+				</attribute>
+			</optional>
+			<ref name="common-field-fixed-attlist"/>
+		</interleave>
+	</define>
+	<define name="text-template-name-attlist">
+		<optional>
+			<attribute name="text:display">
+				<choice>
+					<value>full</value>
+					<value>path</value>
+					<value>name</value>
+					<value>name-and-extension</value>
+					<value>area</value>
+					<value>title</value>
+				</choice>
+			</attribute>
+		</optional>
+	</define>
+	<define name="text-variable-decl">
+		<element name="text:variable-decl">
+			<ref name="common-field-name-attlist"/>
+			<ref name="common-value-type-attlist"/>
+		</element>
+	</define>
+	<define name="text-user-field-decl">
+		<element name="text:user-field-decl">
+			<ref name="common-field-name-attlist"/>
+			<optional>
+				<ref name="common-field-formula-attlist"/>
+			</optional>
+			<ref name="common-value-and-type-attlist"/>
+		</element>
+	</define>
+	<define name="text-sequence-decl">
+		<element name="text:sequence-decl">
+			<ref name="text-sequence-decl-attlist"/>
+		</element>
+	</define>
+	<define name="text-sequence-decl-attlist">
+		<interleave>
+			<ref name="common-field-name-attlist"/>
+			<attribute name="text:display-outline-level">
+				<ref name="nonNegativeInteger"/>
+			</attribute>
+			<optional>
+				<attribute name="text:separation-character">
+					<ref name="character"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="text-sequence-ref-name">
+		<optional>
+			<attribute name="text:ref-name">
+				<ref name="string"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-field-database-table">
+		<ref name="common-field-database-table-attlist"/>
+		<ref name="common-field-database-name"/>
+	</define>
+	<define name="common-field-database-name">
+		<choice>
+			<optional>
+				<attribute name="text:database-name">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<ref name="form-connection-resource"/>
+		</choice>
+	</define>
+	<define name="common-field-database-table-attlist">
+		<interleave>
+			<attribute name="text:table-name">
+				<ref name="string"/>
+			</attribute>
+			<optional>
+				<attribute name="text:table-type">
+					<choice>
+						<value>table</value>
+						<value>query</value>
+						<value>command</value>
+					</choice>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="text-database-display-attlist">
+		<interleave>
+			<ref name="common-field-database-table"/>
+			<ref name="common-field-data-style-name-attlist"/>
+			<attribute name="text:column-name">
+				<ref name="string"/>
+			</attribute>
+		</interleave>
+	</define>
+	<define name="text-database-next-attlist">
+		<interleave>
+			<ref name="common-field-database-table"/>
+			<optional>
+				<attribute name="text:condition">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="text-database-row-select-attlist">
+		<interleave>
+			<ref name="common-field-database-table"/>
+			<optional>
+				<attribute name="text:condition">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:row-number">
+					<ref name="nonNegativeInteger"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="text-set-page-variable-attlist">
+		<interleave>
+			<optional>
+				<attribute name="text:active">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:page-adjust">
+					<ref name="integer"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="text-get-page-variable-attlist">
+		<ref name="common-field-num-format-attlist"/>
+	</define>
+	<define name="text-placeholder-attlist">
+		<interleave>
+			<attribute name="text:placeholder-type">
+				<choice>
+					<value>text</value>
+					<value>table</value>
+					<value>text-box</value>
+					<value>image</value>
+					<value>object</value>
+				</choice>
+			</attribute>
+			<ref name="common-field-description-attlist"/>
+		</interleave>
+	</define>
+	<define name="text-conditional-text-attlist">
+		<interleave>
+			<attribute name="text:condition">
+				<ref name="string"/>
+			</attribute>
+			<attribute name="text:string-value-if-true">
+				<ref name="string"/>
+			</attribute>
+			<attribute name="text:string-value-if-false">
+				<ref name="string"/>
+			</attribute>
+			<optional>
+				<attribute name="text:current-value">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="text-hidden-text-attlist">
+		<interleave>
+			<attribute name="text:condition">
+				<ref name="string"/>
+			</attribute>
+			<attribute name="text:string-value">
+				<ref name="string"/>
+			</attribute>
+			<optional>
+				<attribute name="text:is-hidden">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="text-common-ref-content">
+		<interleave>
+			<text/>
+			<optional>
+				<attribute name="text:ref-name">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="text-bookmark-ref-content">
+		<optional>
+			<attribute name="text:reference-format">
+				<choice>
+					<ref name="common-ref-format-values"/>
+					<value>number-no-superior</value>
+					<value>number-all-superior</value>
+					<value>number</value>
+				</choice>
+			</attribute>
+		</optional>
+	</define>
+	<define name="text-note-ref-content">
+		<interleave>
+			<optional>
+				<attribute name="text:reference-format">
+					<choice>
+						<ref name="common-ref-format-values"/>
+					</choice>
+				</attribute>
+			</optional>
+			<ref name="text-note-class"/>
+		</interleave>
+	</define>
+	<define name="text-sequence-ref-content">
+		<optional>
+			<attribute name="text:reference-format">
+				<choice>
+					<ref name="common-ref-format-values"/>
+					<value>category-and-value</value>
+					<value>caption</value>
+					<value>value</value>
+				</choice>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-ref-format-values">
+		<choice>
+			<value>page</value>
+			<value>chapter</value>
+			<value>direction</value>
+			<value>text</value>
+		</choice>
+	</define>
+	<define name="text-hidden-paragraph-attlist">
+		<interleave>
+			<attribute name="text:condition">
+				<ref name="string"/>
+			</attribute>
+			<optional>
+				<attribute name="text:is-hidden">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="text-meta-field-attlist">
+		<interleave>
+			<ref name="xml-id"/>
+			<ref name="common-field-data-style-name-attlist"/>
+		</interleave>
+	</define>
+	<define name="common-value-type-attlist">
+		<attribute name="office:value-type">
+			<ref name="valueType"/>
+		</attribute>
+	</define>
+	<define name="common-value-and-type-attlist">
+		<choice>
+			<group>
+				<attribute name="office:value-type">
+					<value>float</value>
+				</attribute>
+				<attribute name="office:value">
+					<ref name="double"/>
+				</attribute>
+			</group>
+			<group>
+				<attribute name="office:value-type">
+					<value>percentage</value>
+				</attribute>
+				<attribute name="office:value">
+					<ref name="double"/>
+				</attribute>
+			</group>
+			<group>
+				<attribute name="office:value-type">
+					<value>currency</value>
+				</attribute>
+				<attribute name="office:value">
+					<ref name="double"/>
+				</attribute>
+				<optional>
+					<attribute name="office:currency">
+						<ref name="string"/>
+					</attribute>
+				</optional>
+			</group>
+			<group>
+				<attribute name="office:value-type">
+					<value>date</value>
+				</attribute>
+				<attribute name="office:date-value">
+					<ref name="dateOrDateTime"/>
+				</attribute>
+			</group>
+			<group>
+				<attribute name="office:value-type">
+					<value>time</value>
+				</attribute>
+				<attribute name="office:time-value">
+					<ref name="duration"/>
+				</attribute>
+			</group>
+			<group>
+				<attribute name="office:value-type">
+					<value>boolean</value>
+				</attribute>
+				<attribute name="office:boolean-value">
+					<ref name="boolean"/>
+				</attribute>
+			</group>
+			<group>
+				<attribute name="office:value-type">
+					<value>string</value>
+				</attribute>
+				<optional>
+					<attribute name="office:string-value">
+						<ref name="string"/>
+					</attribute>
+				</optional>
+			</group>
+		</choice>
+	</define>
+	<define name="common-field-fixed-attlist">
+		<optional>
+			<attribute name="text:fixed">
+				<ref name="boolean"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-field-name-attlist">
+		<attribute name="text:name">
+			<ref name="variableName"/>
+		</attribute>
+	</define>
+	<define name="common-field-description-attlist">
+		<optional>
+			<attribute name="text:description">
+				<ref name="string"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-field-display-value-none-attlist">
+		<optional>
+			<attribute name="text:display">
+				<choice>
+					<value>value</value>
+					<value>none</value>
+				</choice>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-field-display-value-formula-none-attlist">
+		<optional>
+			<attribute name="text:display">
+				<choice>
+					<value>value</value>
+					<value>formula</value>
+					<value>none</value>
+				</choice>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-field-display-value-formula-attlist">
+		<optional>
+			<attribute name="text:display">
+				<choice>
+					<value>value</value>
+					<value>formula</value>
+				</choice>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-field-formula-attlist">
+		<optional>
+			<attribute name="text:formula">
+				<ref name="string"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-field-data-style-name-attlist">
+		<optional>
+			<attribute name="style:data-style-name">
+				<ref name="styleNameRef"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-field-num-format-attlist">
+		<optional>
+			<ref name="common-num-format-attlist"/>
+		</optional>
+	</define>
+	<define name="text-toc-mark-start-attrs">
+		<ref name="text-id"/>
+		<ref name="text-outline-level"/>
+	</define>
+	<define name="text-outline-level">
+		<optional>
+			<attribute name="text:outline-level">
+				<ref name="positiveInteger"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="text-id">
+		<attribute name="text:id">
+			<ref name="string"/>
+		</attribute>
+	</define>
+	<define name="text-index-name">
+		<attribute name="text:index-name">
+			<ref name="string"/>
+		</attribute>
+	</define>
+	<define name="text-alphabetical-index-mark-attrs">
+		<interleave>
+			<optional>
+				<attribute name="text:key1">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:key2">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:string-value-phonetic">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:key1-phonetic">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:key2-phonetic">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:main-entry">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="text-bibliography-types">
+		<choice>
+			<value>article</value>
+			<value>book</value>
+			<value>booklet</value>
+			<value>conference</value>
+			<value>custom1</value>
+			<value>custom2</value>
+			<value>custom3</value>
+			<value>custom4</value>
+			<value>custom5</value>
+			<value>email</value>
+			<value>inbook</value>
+			<value>incollection</value>
+			<value>inproceedings</value>
+			<value>journal</value>
+			<value>manual</value>
+			<value>mastersthesis</value>
+			<value>misc</value>
+			<value>phdthesis</value>
+			<value>proceedings</value>
+			<value>techreport</value>
+			<value>unpublished</value>
+			<value>www</value>
+		</choice>
+	</define>
+	<define name="text-index-body">
+		<element name="text:index-body">
+			<zeroOrMore>
+				<ref name="index-content-main"/>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="index-content-main">
+		<choice>
+			<ref name="text-content"/>
+			<ref name="text-index-title"/>
+		</choice>
+	</define>
+	<define name="text-index-title">
+		<element name="text:index-title">
+			<ref name="common-section-attlist"/>
+			<zeroOrMore>
+				<ref name="index-content-main"/>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="text-table-of-content">
+		<element name="text:table-of-content">
+			<ref name="common-section-attlist"/>
+			<ref name="text-table-of-content-source"/>
+			<ref name="text-index-body"/>
+		</element>
+	</define>
+	<define name="text-table-of-content-source">
+		<element name="text:table-of-content-source">
+			<ref name="text-table-of-content-source-attlist"/>
+			<optional>
+				<ref name="text-index-title-template"/>
+			</optional>
+			<zeroOrMore>
+				<ref name="text-table-of-content-entry-template"/>
+			</zeroOrMore>
+			<zeroOrMore>
+				<ref name="text-index-source-styles"/>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="text-table-of-content-source-attlist">
+		<interleave>
+			<optional>
+				<attribute name="text:outline-level">
+					<ref name="positiveInteger"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:use-outline-level">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:use-index-marks">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:use-index-source-styles">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:index-scope">
+					<choice>
+						<value>document</value>
+						<value>chapter</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:relative-tab-stop-position">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="text-table-of-content-entry-template">
+		<element name="text:table-of-content-entry-template">
+			<ref name="text-table-of-content-entry-template-attlist"/>
+			<zeroOrMore>
+				<ref name="text-table-of-content-children"/>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="text-table-of-content-children">
+		<choice>
+			<ref name="text-index-entry-chapter"/>
+			<ref name="text-index-entry-page-number"/>
+			<ref name="text-index-entry-text"/>
+			<ref name="text-index-entry-span"/>
+			<ref name="text-index-entry-tab-stop"/>
+			<ref name="text-index-entry-link-start"/>
+			<ref name="text-index-entry-link-end"/>
+		</choice>
+	</define>
+	<define name="text-table-of-content-entry-template-attlist">
+		<interleave>
+			<attribute name="text:outline-level">
+				<ref name="positiveInteger"/>
+			</attribute>
+			<attribute name="text:style-name">
+				<ref name="styleNameRef"/>
+			</attribute>
+		</interleave>
+	</define>
+	<define name="text-illustration-index">
+		<element name="text:illustration-index">
+			<ref name="common-section-attlist"/>
+			<ref name="text-illustration-index-source"/>
+			<ref name="text-index-body"/>
+		</element>
+	</define>
+	<define name="text-illustration-index-source">
+		<element name="text:illustration-index-source">
+			<ref name="text-illustration-index-source-attrs"/>
+			<optional>
+				<ref name="text-index-title-template"/>
+			</optional>
+			<optional>
+				<ref name="text-illustration-index-entry-template"/>
+			</optional>
+		</element>
+	</define>
+	<define name="text-illustration-index-source-attrs">
+		<interleave>
+			<ref name="text-index-scope-attr"/>
+			<ref name="text-relative-tab-stop-position-attr"/>
+			<optional>
+				<attribute name="text:use-caption">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:caption-sequence-name">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:caption-sequence-format">
+					<choice>
+						<value>text</value>
+						<value>category-and-value</value>
+						<value>caption</value>
+					</choice>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="text-index-scope-attr">
+		<optional>
+			<attribute name="text:index-scope">
+				<choice>
+					<value>document</value>
+					<value>chapter</value>
+				</choice>
+			</attribute>
+		</optional>
+	</define>
+	<define name="text-relative-tab-stop-position-attr">
+		<optional>
+			<attribute name="text:relative-tab-stop-position">
+				<ref name="boolean"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="text-illustration-index-entry-template">
+		<element name="text:illustration-index-entry-template">
+			<ref name="text-illustration-index-entry-content"/>
+		</element>
+	</define>
+	<define name="text-illustration-index-entry-content">
+		<ref name="text-illustration-index-entry-template-attrs"/>
+		<zeroOrMore>
+			<choice>
+				<ref name="text-index-entry-chapter"/>
+				<ref name="text-index-entry-page-number"/>
+				<ref name="text-index-entry-text"/>
+				<ref name="text-index-entry-span"/>
+				<ref name="text-index-entry-tab-stop"/>
+			</choice>
+		</zeroOrMore>
+	</define>
+	<define name="text-illustration-index-entry-template-attrs">
+		<attribute name="text:style-name">
+			<ref name="styleNameRef"/>
+		</attribute>
+	</define>
+	<define name="text-table-index">
+		<element name="text:table-index">
+			<ref name="common-section-attlist"/>
+			<ref name="text-table-index-source"/>
+			<ref name="text-index-body"/>
+		</element>
+	</define>
+	<define name="text-table-index-source">
+		<element name="text:table-index-source">
+			<ref name="text-illustration-index-source-attrs"/>
+			<optional>
+				<ref name="text-index-title-template"/>
+			</optional>
+			<optional>
+				<ref name="text-table-index-entry-template"/>
+			</optional>
+		</element>
+	</define>
+	<define name="text-table-index-entry-template">
+		<element name="text:table-index-entry-template">
+			<ref name="text-illustration-index-entry-content"/>
+		</element>
+	</define>
+	<define name="text-object-index">
+		<element name="text:object-index">
+			<ref name="common-section-attlist"/>
+			<ref name="text-object-index-source"/>
+			<ref name="text-index-body"/>
+		</element>
+	</define>
+	<define name="text-object-index-source">
+		<element name="text:object-index-source">
+			<ref name="text-object-index-source-attrs"/>
+			<optional>
+				<ref name="text-index-title-template"/>
+			</optional>
+			<optional>
+				<ref name="text-object-index-entry-template"/>
+			</optional>
+		</element>
+	</define>
+	<define name="text-object-index-source-attrs">
+		<interleave>
+			<ref name="text-index-scope-attr"/>
+			<ref name="text-relative-tab-stop-position-attr"/>
+			<optional>
+				<attribute name="text:use-spreadsheet-objects">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:use-math-objects">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:use-draw-objects">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:use-chart-objects">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:use-other-objects">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="text-object-index-entry-template">
+		<element name="text:object-index-entry-template">
+			<ref name="text-illustration-index-entry-content"/>
+		</element>
+	</define>
+	<define name="text-user-index">
+		<element name="text:user-index">
+			<ref name="common-section-attlist"/>
+			<ref name="text-user-index-source"/>
+			<ref name="text-index-body"/>
+		</element>
+	</define>
+	<define name="text-user-index-source">
+		<element name="text:user-index-source">
+			<ref name="text-user-index-source-attr"/>
+			<optional>
+				<ref name="text-index-title-template"/>
+			</optional>
+			<zeroOrMore>
+				<ref name="text-user-index-entry-template"/>
+			</zeroOrMore>
+			<zeroOrMore>
+				<ref name="text-index-source-styles"/>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="text-user-index-source-attr">
+		<interleave>
+			<ref name="text-index-scope-attr"/>
+			<ref name="text-relative-tab-stop-position-attr"/>
+			<optional>
+				<attribute name="text:use-index-marks">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:use-index-source-styles">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:use-graphics">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:use-tables">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:use-floating-frames">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:use-objects">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:copy-outline-levels">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<attribute name="text:index-name">
+				<ref name="string"/>
+			</attribute>
+		</interleave>
+	</define>
+	<define name="text-user-index-entry-template">
+		<element name="text:user-index-entry-template">
+			<ref name="text-user-index-entry-template-attrs"/>
+			<zeroOrMore>
+				<choice>
+					<ref name="text-index-entry-chapter"/>
+					<ref name="text-index-entry-page-number"/>
+					<ref name="text-index-entry-text"/>
+					<ref name="text-index-entry-span"/>
+					<ref name="text-index-entry-tab-stop"/>
+				</choice>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="text-user-index-entry-template-attrs">
+		<interleave>
+			<attribute name="text:outline-level">
+				<ref name="positiveInteger"/>
+			</attribute>
+			<attribute name="text:style-name">
+				<ref name="styleNameRef"/>
+			</attribute>
+		</interleave>
+	</define>
+	<define name="text-alphabetical-index">
+		<element name="text:alphabetical-index">
+			<ref name="common-section-attlist"/>
+			<ref name="text-alphabetical-index-source"/>
+			<ref name="text-index-body"/>
+		</element>
+	</define>
+	<define name="text-alphabetical-index-source">
+		<element name="text:alphabetical-index-source">
+			<ref name="text-alphabetical-index-source-attrs"/>
+			<optional>
+				<ref name="text-index-title-template"/>
+			</optional>
+			<zeroOrMore>
+				<ref name="text-alphabetical-index-entry-template"/>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="text-alphabetical-index-source-attrs">
+		<interleave>
+			<ref name="text-index-scope-attr"/>
+			<ref name="text-relative-tab-stop-position-attr"/>
+			<optional>
+				<attribute name="text:ignore-case">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:main-entry-style-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:alphabetical-separators">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:combine-entries">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:combine-entries-with-dash">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:combine-entries-with-pp">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:use-keys-as-entries">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:capitalize-entries">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:comma-separated">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="fo:language">
+					<ref name="languageCode"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="fo:country">
+					<ref name="countryCode"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="fo:script">
+					<ref name="scriptCode"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:rfc-language-tag">
+					<ref name="language"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:sort-algorithm">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="text-alphabetical-index-auto-mark-file">
+		<element name="text:alphabetical-index-auto-mark-file">
+			<attribute name="xlink:type">
+				<value>simple</value>
+			</attribute>
+			<attribute name="xlink:href">
+				<ref name="anyIRI"/>
+			</attribute>
+		</element>
+	</define>
+	<define name="text-alphabetical-index-entry-template">
+		<element name="text:alphabetical-index-entry-template">
+			<ref name="text-alphabetical-index-entry-template-attrs"/>
+			<zeroOrMore>
+				<choice>
+					<ref name="text-index-entry-chapter"/>
+					<ref name="text-index-entry-page-number"/>
+					<ref name="text-index-entry-text"/>
+					<ref name="text-index-entry-span"/>
+					<ref name="text-index-entry-tab-stop"/>
+				</choice>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="text-alphabetical-index-entry-template-attrs">
+		<interleave>
+			<attribute name="text:outline-level">
+				<choice>
+					<value>1</value>
+					<value>2</value>
+					<value>3</value>
+					<value>separator</value>
+				</choice>
+			</attribute>
+			<attribute name="text:style-name">
+				<ref name="styleNameRef"/>
+			</attribute>
+		</interleave>
+	</define>
+	<define name="text-bibliography">
+		<element name="text:bibliography">
+			<ref name="common-section-attlist"/>
+			<ref name="text-bibliography-source"/>
+			<ref name="text-index-body"/>
+		</element>
+	</define>
+	<define name="text-bibliography-source">
+		<element name="text:bibliography-source">
+			<optional>
+				<ref name="text-index-title-template"/>
+			</optional>
+			<zeroOrMore>
+				<ref name="text-bibliography-entry-template"/>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="text-bibliography-entry-template">
+		<element name="text:bibliography-entry-template">
+			<ref name="text-bibliography-entry-template-attrs"/>
+			<zeroOrMore>
+				<choice>
+					<ref name="text-index-entry-span"/>
+					<ref name="text-index-entry-tab-stop"/>
+					<ref name="text-index-entry-bibliography"/>
+				</choice>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="text-bibliography-entry-template-attrs">
+		<interleave>
+			<attribute name="text:bibliography-type">
+				<ref name="text-bibliography-types"/>
+			</attribute>
+			<attribute name="text:style-name">
+				<ref name="styleNameRef"/>
+			</attribute>
+		</interleave>
+	</define>
+	<define name="text-index-source-styles">
+		<element name="text:index-source-styles">
+			<attribute name="text:outline-level">
+				<ref name="positiveInteger"/>
+			</attribute>
+			<zeroOrMore>
+				<ref name="text-index-source-style"/>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="text-index-source-style">
+		<element name="text:index-source-style">
+			<attribute name="text:style-name">
+				<ref name="styleName"/>
+			</attribute>
+			<empty/>
+		</element>
+	</define>
+	<define name="text-index-title-template">
+		<element name="text:index-title-template">
+			<optional>
+				<attribute name="text:style-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+			<text/>
+		</element>
+	</define>
+	<define name="text-index-entry-chapter">
+		<element name="text:index-entry-chapter">
+			<optional>
+				<attribute name="text:style-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+			<ref name="text-index-entry-chapter-attrs"/>
+		</element>
+	</define>
+	<define name="text-index-entry-chapter-attrs">
+		<interleave>
+			<optional>
+				<attribute name="text:display">
+					<choice>
+						<value>name</value>
+						<value>number</value>
+						<value>number-and-name</value>
+						<value>plain-number</value>
+						<value>plain-number-and-name</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:outline-level">
+					<ref name="positiveInteger"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="text-index-entry-text">
+		<element name="text:index-entry-text">
+			<optional>
+				<attribute name="text:style-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+		</element>
+	</define>
+	<define name="text-index-entry-page-number">
+		<element name="text:index-entry-page-number">
+			<optional>
+				<attribute name="text:style-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+		</element>
+	</define>
+	<define name="text-index-entry-span">
+		<element name="text:index-entry-span">
+			<optional>
+				<attribute name="text:style-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+			<text/>
+		</element>
+	</define>
+	<define name="text-index-entry-bibliography">
+		<element name="text:index-entry-bibliography">
+			<ref name="text-index-entry-bibliography-attrs"/>
+		</element>
+	</define>
+	<define name="text-index-entry-bibliography-attrs">
+		<interleave>
+			<optional>
+				<attribute name="text:style-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+			<attribute name="text:bibliography-data-field">
+				<choice>
+					<value>address</value>
+					<value>annote</value>
+					<value>author</value>
+					<value>bibliography-type</value>
+					<value>booktitle</value>
+					<value>chapter</value>
+					<value>custom1</value>
+					<value>custom2</value>
+					<value>custom3</value>
+					<value>custom4</value>
+					<value>custom5</value>
+					<value>edition</value>
+					<value>editor</value>
+					<value>howpublished</value>
+					<value>identifier</value>
+					<value>institution</value>
+					<value>isbn</value>
+					<value>issn</value>
+					<value>journal</value>
+					<value>month</value>
+					<value>note</value>
+					<value>number</value>
+					<value>organizations</value>
+					<value>pages</value>
+					<value>publisher</value>
+					<value>report-type</value>
+					<value>school</value>
+					<value>series</value>
+					<value>title</value>
+					<value>url</value>
+					<value>volume</value>
+					<value>year</value>
+				</choice>
+			</attribute>
+		</interleave>
+	</define>
+	<define name="text-index-entry-tab-stop">
+		<element name="text:index-entry-tab-stop">
+			<optional>
+				<attribute name="text:style-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+			<ref name="text-index-entry-tab-stop-attrs"/>
+		</element>
+	</define>
+	<define name="text-index-entry-tab-stop-attrs">
+		<interleave>
+			<optional>
+				<attribute name="style:leader-char">
+					<ref name="character"/>
+				</attribute>
+			</optional>
+			<choice>
+				<attribute name="style:type">
+					<value>right</value>
+				</attribute>
+				<group>
+					<attribute name="style:type">
+						<value>left</value>
+					</attribute>
+					<attribute name="style:position">
+						<ref name="length"/>
+					</attribute>
+				</group>
+			</choice>
+		</interleave>
+	</define>
+	<define name="text-index-entry-link-start">
+		<element name="text:index-entry-link-start">
+			<optional>
+				<attribute name="text:style-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+		</element>
+	</define>
+	<define name="text-index-entry-link-end">
+		<element name="text:index-entry-link-end">
+			<optional>
+				<attribute name="text:style-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+		</element>
+	</define>
+	<define name="table-table">
+		<element name="table:table">
+			<ref name="table-table-attlist"/>
+			<optional>
+				<ref name="table-title"/>
+			</optional>
+			<optional>
+				<ref name="table-desc"/>
+			</optional>
+			<optional>
+				<ref name="table-table-source"/>
+			</optional>
+			<optional>
+				<ref name="office-dde-source"/>
+			</optional>
+			<optional>
+				<ref name="table-scenario"/>
+			</optional>
+			<optional>
+				<ref name="office-forms"/>
+			</optional>
+			<optional>
+				<ref name="table-shapes"/>
+			</optional>
+			<ref name="table-columns-and-groups"/>
+			<ref name="table-rows-and-groups"/>
+			<optional>
+				<ref name="table-named-expressions"/>
+			</optional>
+		</element>
+	</define>
+	<define name="table-columns-and-groups">
+		<oneOrMore>
+			<choice>
+				<ref name="table-table-column-group"/>
+				<ref name="table-columns-no-group"/>
+			</choice>
+		</oneOrMore>
+	</define>
+	<define name="table-columns-no-group">
+		<choice>
+			<group>
+				<ref name="table-columns"/>
+				<optional>
+					<ref name="table-table-header-columns"/>
+					<optional>
+						<ref name="table-columns"/>
+					</optional>
+				</optional>
+			</group>
+			<group>
+				<ref name="table-table-header-columns"/>
+				<optional>
+					<ref name="table-columns"/>
+				</optional>
+			</group>
+		</choice>
+	</define>
+	<define name="table-columns">
+		<choice>
+			<ref name="table-table-columns"/>
+			<oneOrMore>
+				<ref name="table-table-column"/>
+			</oneOrMore>
+		</choice>
+	</define>
+	<define name="table-rows-and-groups">
+		<oneOrMore>
+			<choice>
+				<ref name="table-table-row-group"/>
+				<ref name="table-rows-no-group"/>
+			</choice>
+		</oneOrMore>
+	</define>
+	<define name="table-rows-no-group">
+		<choice>
+			<group>
+				<ref name="table-rows"/>
+				<optional>
+					<ref name="table-table-header-rows"/>
+					<optional>
+						<ref name="table-rows"/>
+					</optional>
+				</optional>
+			</group>
+			<group>
+				<ref name="table-table-header-rows"/>
+				<optional>
+					<ref name="table-rows"/>
+				</optional>
+			</group>
+		</choice>
+	</define>
+	<define name="table-rows">
+		<choice>
+			<ref name="table-table-rows"/>
+			<oneOrMore>
+				<optional>
+					<ref name="text-soft-page-break"/>
+				</optional>
+				<ref name="table-table-row"/>
+			</oneOrMore>
+		</choice>
+	</define>
+	<define name="table-table-attlist">
+		<interleave>
+			<optional>
+				<attribute name="table:name">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:style-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:template-name">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:use-first-row-styles">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:use-last-row-styles">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:use-first-column-styles">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:use-last-column-styles">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:use-banding-rows-styles">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:use-banding-columns-styles">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:protected">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:protection-key">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:protection-key-digest-algorithm">
+					<ref name="anyIRI"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:print">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:print-ranges">
+					<ref name="cellRangeAddressList"/>
+				</attribute>
+			</optional>
+			<optional>
+				<ref name="xml-id"/>
+			</optional>
+			<optional>
+				<attribute name="table:is-sub-table">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="table-title">
+		<element name="table:title">
+			<text/>
+		</element>
+	</define>
+	<define name="table-desc">
+		<element name="table:desc">
+			<text/>
+		</element>
+	</define>
+	<define name="table-table-row">
+		<element name="table:table-row">
+			<ref name="table-table-row-attlist"/>
+			<oneOrMore>
+				<choice>
+					<ref name="table-table-cell"/>
+					<ref name="table-covered-table-cell"/>
+				</choice>
+			</oneOrMore>
+		</element>
+	</define>
+	<define name="table-table-row-attlist">
+		<interleave>
+			<optional>
+				<attribute name="table:number-rows-repeated">
+					<ref name="positiveInteger"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:style-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:default-cell-style-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:visibility">
+					<ref name="table-visibility-value"/>
+				</attribute>
+			</optional>
+			<optional>
+				<ref name="xml-id"/>
+			</optional>
+		</interleave>
+	</define>
+	<define name="table-visibility-value">
+		<choice>
+			<value>visible</value>
+			<value>collapse</value>
+			<value>filter</value>
+		</choice>
+	</define>
+	<define name="table-table-cell">
+		<element name="table:table-cell">
+			<ref name="table-table-cell-attlist"/>
+			<ref name="table-table-cell-attlist-extra"/>
+			<ref name="table-table-cell-content"/>
+		</element>
+	</define>
+	<define name="table-covered-table-cell">
+		<element name="table:covered-table-cell">
+			<ref name="table-table-cell-attlist"/>
+			<ref name="table-table-cell-content"/>
+		</element>
+	</define>
+	<define name="table-table-cell-content">
+		<optional>
+			<ref name="table-cell-range-source"/>
+		</optional>
+		<optional>
+			<ref name="office-annotation"/>
+		</optional>
+		<optional>
+			<ref name="table-detective"/>
+		</optional>
+		<zeroOrMore>
+			<ref name="text-content"/>
+		</zeroOrMore>
+	</define>
+	<define name="table-table-cell-attlist">
+		<interleave>
+			<optional>
+				<attribute name="table:number-columns-repeated">
+					<ref name="positiveInteger"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:style-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:content-validation-name">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:formula">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<ref name="common-value-and-type-attlist"/>
+			</optional>
+			<optional>
+				<attribute name="table:protect">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:protected">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<ref name="xml-id"/>
+			</optional>
+			<optional>
+				<ref name="common-in-content-meta-attlist"/>
+			</optional>
+		</interleave>
+	</define>
+	<define name="table-table-cell-attlist-extra">
+		<interleave>
+			<optional>
+				<attribute name="table:number-columns-spanned">
+					<ref name="positiveInteger"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:number-rows-spanned">
+					<ref name="positiveInteger"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:number-matrix-columns-spanned">
+					<ref name="positiveInteger"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:number-matrix-rows-spanned">
+					<ref name="positiveInteger"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="table-table-column">
+		<element name="table:table-column">
+			<ref name="table-table-column-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="table-table-column-attlist">
+		<interleave>
+			<optional>
+				<attribute name="table:number-columns-repeated">
+					<ref name="positiveInteger"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:style-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:visibility">
+					<ref name="table-visibility-value"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:default-cell-style-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+			<optional>
+				<ref name="xml-id"/>
+			</optional>
+		</interleave>
+	</define>
+	<define name="table-table-header-columns">
+		<element name="table:table-header-columns">
+			<oneOrMore>
+				<ref name="table-table-column"/>
+			</oneOrMore>
+		</element>
+	</define>
+	<define name="table-table-columns">
+		<element name="table:table-columns">
+			<oneOrMore>
+				<ref name="table-table-column"/>
+			</oneOrMore>
+		</element>
+	</define>
+	<define name="table-table-column-group">
+		<element name="table:table-column-group">
+			<ref name="table-table-column-group-attlist"/>
+			<ref name="table-columns-and-groups"/>
+		</element>
+	</define>
+	<define name="table-table-column-group-attlist">
+		<optional>
+			<attribute name="table:display">
+				<ref name="boolean"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="table-table-header-rows">
+		<element name="table:table-header-rows">
+			<oneOrMore>
+				<optional>
+					<ref name="text-soft-page-break"/>
+				</optional>
+				<ref name="table-table-row"/>
+			</oneOrMore>
+		</element>
+	</define>
+	<define name="table-table-rows">
+		<element name="table:table-rows">
+			<oneOrMore>
+				<optional>
+					<ref name="text-soft-page-break"/>
+				</optional>
+				<ref name="table-table-row"/>
+			</oneOrMore>
+		</element>
+	</define>
+	<define name="table-table-row-group">
+		<element name="table:table-row-group">
+			<ref name="table-table-row-group-attlist"/>
+			<ref name="table-rows-and-groups"/>
+		</element>
+	</define>
+	<define name="table-table-row-group-attlist">
+		<optional>
+			<attribute name="table:display">
+				<ref name="boolean"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="cellAddress">
+		<data type="string">
+			<param name="pattern">($?([^\. ']+|'([^']|'')+'))?\.$?[A-Z]+$?[0-9]+</param>
+		</data>
+	</define>
+	<define name="cellRangeAddress">
+		<choice>
+			<data type="string">
+				<param name="pattern">($?([^\. ']+|'([^']|'')+'))?\.$?[A-Z]+$?[0-9]+(:($?([^\. ']+|'([^']|'')+'))?\.$?[A-Z]+$?[0-9]+)?</param>
+			</data>
+			<data type="string">
+				<param name="pattern">($?([^\. ']+|'([^']|'')+'))?\.$?[0-9]+:($?([^\. ']+|'([^']|'')+'))?\.$?[0-9]+</param>
+			</data>
+			<data type="string">
+				<param name="pattern">($?([^\. ']+|'([^']|'')+'))?\.$?[A-Z]+:($?([^\. ']+|'([^']|'')+'))?\.$?[A-Z]+</param>
+			</data>
+		</choice>
+	</define>
+	<define name="cellRangeAddressList">
+		<data type="string"/>
+		<dc:description>Value is a space separated list of "cellRangeAddress" patterns</dc:description>
+	</define>
+	<define name="table-table-source">
+		<element name="table:table-source">
+			<ref name="table-table-source-attlist"/>
+			<ref name="table-linked-source-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="table-table-source-attlist">
+		<interleave>
+			<optional>
+				<attribute name="table:mode">
+					<choice>
+						<value>copy-all</value>
+						<value>copy-results-only</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:table-name">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="table-linked-source-attlist">
+		<interleave>
+			<attribute name="xlink:type">
+				<value>simple</value>
+			</attribute>
+			<attribute name="xlink:href">
+				<ref name="anyIRI"/>
+			</attribute>
+			<optional>
+				<attribute name="xlink:actuate">
+					<value>onRequest</value>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:filter-name">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:filter-options">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:refresh-delay">
+					<ref name="duration"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="table-scenario">
+		<element name="table:scenario">
+			<ref name="table-scenario-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="table-scenario-attlist">
+		<interleave>
+			<attribute name="table:scenario-ranges">
+				<ref name="cellRangeAddressList"/>
+			</attribute>
+			<attribute name="table:is-active">
+				<ref name="boolean"/>
+			</attribute>
+			<optional>
+				<attribute name="table:display-border">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:border-color">
+					<ref name="color"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:copy-back">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:copy-styles">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:copy-formulas">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:comment">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:protected">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="table-shapes">
+		<element name="table:shapes">
+			<oneOrMore>
+				<ref name="shape"/>
+			</oneOrMore>
+		</element>
+	</define>
+	<define name="table-cell-range-source">
+		<element name="table:cell-range-source">
+			<ref name="table-table-cell-range-source-attlist"/>
+			<ref name="table-linked-source-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="table-table-cell-range-source-attlist">
+		<interleave>
+			<attribute name="table:name">
+				<ref name="string"/>
+			</attribute>
+			<attribute name="table:last-column-spanned">
+				<ref name="positiveInteger"/>
+			</attribute>
+			<attribute name="table:last-row-spanned">
+				<ref name="positiveInteger"/>
+			</attribute>
+		</interleave>
+	</define>
+	<define name="table-detective">
+		<element name="table:detective">
+			<zeroOrMore>
+				<ref name="table-highlighted-range"/>
+			</zeroOrMore>
+			<zeroOrMore>
+				<ref name="table-operation"/>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="table-operation">
+		<element name="table:operation">
+			<ref name="table-operation-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="table-operation-attlist">
+		<interleave>
+			<attribute name="table:name">
+				<choice>
+					<value>trace-dependents</value>
+					<value>remove-dependents</value>
+					<value>trace-precedents</value>
+					<value>remove-precedents</value>
+					<value>trace-errors</value>
+				</choice>
+			</attribute>
+			<attribute name="table:index">
+				<ref name="nonNegativeInteger"/>
+			</attribute>
+		</interleave>
+	</define>
+	<define name="table-highlighted-range">
+		<element name="table:highlighted-range">
+			<choice>
+				<group>
+					<ref name="table-highlighted-range-attlist"/>
+				</group>
+				<group>
+					<ref name="table-highlighted-range-attlist-invalid"/>
+				</group>
+			</choice>
+			<empty/>
+		</element>
+	</define>
+	<define name="table-highlighted-range-attlist">
+		<interleave>
+			<optional>
+				<attribute name="table:cell-range-address">
+					<ref name="cellRangeAddress"/>
+				</attribute>
+			</optional>
+			<attribute name="table:direction">
+				<choice>
+					<value>from-another-table</value>
+					<value>to-another-table</value>
+					<value>from-same-table</value>
+				</choice>
+			</attribute>
+			<optional>
+				<attribute name="table:contains-error">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="table-highlighted-range-attlist-invalid">
+		<attribute name="table:marked-invalid">
+			<ref name="boolean"/>
+		</attribute>
+	</define>
+	<define name="office-spreadsheet-attlist">
+		<optional>
+			<attribute name="table:structure-protected">
+				<ref name="boolean"/>
+			</attribute>
+		</optional>
+		<optional>
+			<attribute name="table:protection-key">
+				<ref name="string"/>
+			</attribute>
+		</optional>
+		<optional>
+			<attribute name="table:protection-key-digest-algorithm">
+				<ref name="anyIRI"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="table-calculation-settings">
+		<element name="table:calculation-settings">
+			<ref name="table-calculation-setting-attlist"/>
+			<optional>
+				<ref name="table-null-date"/>
+			</optional>
+			<optional>
+				<ref name="table-iteration"/>
+			</optional>
+		</element>
+	</define>
+	<define name="table-calculation-setting-attlist">
+		<interleave>
+			<optional>
+				<attribute name="table:case-sensitive">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:precision-as-shown">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:search-criteria-must-apply-to-whole-cell">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:automatic-find-labels">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:use-regular-expressions">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:use-wildcards">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:null-year">
+					<ref name="positiveInteger"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="table-null-date">
+		<element name="table:null-date">
+			<optional>
+				<attribute name="table:value-type">
+					<value>date</value>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:date-value">
+					<ref name="date"/>
+				</attribute>
+			</optional>
+			<empty/>
+		</element>
+	</define>
+	<define name="table-iteration">
+		<element name="table:iteration">
+			<optional>
+				<attribute name="table:status">
+					<choice>
+						<value>enable</value>
+						<value>disable</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:steps">
+					<ref name="positiveInteger"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:maximum-difference">
+					<ref name="double"/>
+				</attribute>
+			</optional>
+			<empty/>
+		</element>
+	</define>
+	<define name="table-content-validations">
+		<element name="table:content-validations">
+			<oneOrMore>
+				<ref name="table-content-validation"/>
+			</oneOrMore>
+		</element>
+	</define>
+	<define name="table-content-validation">
+		<element name="table:content-validation">
+			<ref name="table-validation-attlist"/>
+			<optional>
+				<ref name="table-help-message"/>
+			</optional>
+			<optional>
+				<choice>
+					<ref name="table-error-message"/>
+					<group>
+						<ref name="table-error-macro"/>
+						<ref name="office-event-listeners"/>
+					</group>
+				</choice>
+			</optional>
+		</element>
+	</define>
+	<define name="table-validation-attlist">
+		<interleave>
+			<attribute name="table:name">
+				<ref name="string"/>
+			</attribute>
+			<optional>
+				<attribute name="table:condition">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:base-cell-address">
+					<ref name="cellAddress"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:allow-empty-cell">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:display-list">
+					<choice>
+						<value>none</value>
+						<value>unsorted</value>
+						<value>sort-ascending</value>
+					</choice>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="table-help-message">
+		<element name="table:help-message">
+			<optional>
+				<attribute name="table:title">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:display">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<zeroOrMore>
+				<ref name="text-p"/>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="table-error-message">
+		<element name="table:error-message">
+			<optional>
+				<attribute name="table:title">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:display">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:message-type">
+					<choice>
+						<value>stop</value>
+						<value>warning</value>
+						<value>information</value>
+					</choice>
+				</attribute>
+			</optional>
+			<zeroOrMore>
+				<ref name="text-p"/>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="table-error-macro">
+		<element name="table:error-macro">
+			<optional>
+				<attribute name="table:execute">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+		</element>
+	</define>
+	<define name="table-label-ranges">
+		<element name="table:label-ranges">
+			<zeroOrMore>
+				<ref name="table-label-range"/>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="table-label-range">
+		<element name="table:label-range">
+			<ref name="table-label-range-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="table-label-range-attlist">
+		<interleave>
+			<attribute name="table:label-cell-range-address">
+				<ref name="cellRangeAddress"/>
+			</attribute>
+			<attribute name="table:data-cell-range-address">
+				<ref name="cellRangeAddress"/>
+			</attribute>
+			<attribute name="table:orientation">
+				<choice>
+					<value>column</value>
+					<value>row</value>
+				</choice>
+			</attribute>
+		</interleave>
+	</define>
+	<define name="table-named-expressions">
+		<element name="table:named-expressions">
+			<zeroOrMore>
+				<choice>
+					<ref name="table-named-range"/>
+					<ref name="table-named-expression"/>
+				</choice>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="table-named-range">
+		<element name="table:named-range">
+			<ref name="table-named-range-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="table-named-range-attlist">
+		<attribute name="table:name">
+			<ref name="string"/>
+		</attribute>
+		<attribute name="table:cell-range-address">
+			<ref name="cellRangeAddress"/>
+		</attribute>
+		<optional>
+			<attribute name="table:base-cell-address">
+				<ref name="cellAddress"/>
+			</attribute>
+		</optional>
+		<optional>
+			<attribute name="table:range-usable-as">
+				<choice>
+					<value>none</value>
+					<list>
+						<oneOrMore>
+							<choice>
+								<value>print-range</value>
+								<value>filter</value>
+								<value>repeat-row</value>
+								<value>repeat-column</value>
+							</choice>
+						</oneOrMore>
+					</list>
+				</choice>
+			</attribute>
+		</optional>
+	</define>
+	<define name="table-named-expression">
+		<element name="table:named-expression">
+			<ref name="table-named-expression-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="table-named-expression-attlist">
+		<attribute name="table:name">
+			<ref name="string"/>
+		</attribute>
+		<attribute name="table:expression">
+			<ref name="string"/>
+		</attribute>
+		<optional>
+			<attribute name="table:base-cell-address">
+				<ref name="cellAddress"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="table-database-ranges">
+		<element name="table:database-ranges">
+			<zeroOrMore>
+				<ref name="table-database-range"/>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="table-database-range">
+		<element name="table:database-range">
+			<ref name="table-database-range-attlist"/>
+			<optional>
+				<choice>
+					<ref name="table-database-source-sql"/>
+					<ref name="table-database-source-table"/>
+					<ref name="table-database-source-query"/>
+				</choice>
+			</optional>
+			<optional>
+				<ref name="table-filter"/>
+			</optional>
+			<optional>
+				<ref name="table-sort"/>
+			</optional>
+			<optional>
+				<ref name="table-subtotal-rules"/>
+			</optional>
+		</element>
+	</define>
+	<define name="table-database-range-attlist">
+		<interleave>
+			<optional>
+				<attribute name="table:name">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:is-selection">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:on-update-keep-styles">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:on-update-keep-size">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:has-persistent-data">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:orientation">
+					<choice>
+						<value>column</value>
+						<value>row</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:contains-header">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:display-filter-buttons">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<attribute name="table:target-range-address">
+				<ref name="cellRangeAddress"/>
+			</attribute>
+			<optional>
+				<attribute name="table:refresh-delay">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="table-database-source-sql">
+		<element name="table:database-source-sql">
+			<ref name="table-database-source-sql-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="table-database-source-sql-attlist">
+		<interleave>
+			<attribute name="table:database-name">
+				<ref name="string"/>
+			</attribute>
+			<attribute name="table:sql-statement">
+				<ref name="string"/>
+			</attribute>
+			<optional>
+				<attribute name="table:parse-sql-statement">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="table-database-source-query">
+		<element name="table:database-source-table">
+			<ref name="table-database-source-table-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="table-database-source-table-attlist">
+		<interleave>
+			<attribute name="table:database-name">
+				<ref name="string"/>
+			</attribute>
+			<attribute name="table:database-table-name">
+				<ref name="string"/>
+			</attribute>
+		</interleave>
+	</define>
+	<define name="table-database-source-table">
+		<element name="table:database-source-query">
+			<ref name="table-database-source-query-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="table-database-source-query-attlist">
+		<interleave>
+			<attribute name="table:database-name">
+				<ref name="string"/>
+			</attribute>
+			<attribute name="table:query-name">
+				<ref name="string"/>
+			</attribute>
+		</interleave>
+	</define>
+	<define name="table-sort">
+		<element name="table:sort">
+			<ref name="table-sort-attlist"/>
+			<oneOrMore>
+				<ref name="table-sort-by"/>
+			</oneOrMore>
+		</element>
+	</define>
+	<define name="table-sort-attlist">
+		<interleave>
+			<optional>
+				<attribute name="table:bind-styles-to-content">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:target-range-address">
+					<ref name="cellRangeAddress"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:case-sensitive">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:language">
+					<ref name="languageCode"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:country">
+					<ref name="countryCode"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:script">
+					<ref name="scriptCode"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:rfc-language-tag">
+					<ref name="language"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:algorithm">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:embedded-number-behavior">
+					<choice>
+						<value>alpha-numeric</value>
+						<value>integer</value>
+						<value>double</value>
+					</choice>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="table-sort-by">
+		<element name="table:sort-by">
+			<ref name="table-sort-by-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="table-sort-by-attlist">
+		<interleave>
+			<attribute name="table:field-number">
+				<ref name="nonNegativeInteger"/>
+			</attribute>
+			<optional>
+				<attribute name="table:data-type">
+					<choice>
+						<value>text</value>
+						<value>number</value>
+						<value>automatic</value>
+						<ref name="string"/>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:order">
+					<choice>
+						<value>ascending</value>
+						<value>descending</value>
+					</choice>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="table-subtotal-rules">
+		<element name="table:subtotal-rules">
+			<ref name="table-subtotal-rules-attlist"/>
+			<optional>
+				<ref name="table-sort-groups"/>
+			</optional>
+			<zeroOrMore>
+				<ref name="table-subtotal-rule"/>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="table-subtotal-rules-attlist">
+		<interleave>
+			<optional>
+				<attribute name="table:bind-styles-to-content">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:case-sensitive">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:page-breaks-on-group-change">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="table-sort-groups">
+		<element name="table:sort-groups">
+			<ref name="table-sort-groups-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="table-sort-groups-attlist">
+		<interleave>
+			<optional>
+				<attribute name="table:data-type">
+					<choice>
+						<value>text</value>
+						<value>number</value>
+						<value>automatic</value>
+						<ref name="string"/>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:order">
+					<choice>
+						<value>ascending</value>
+						<value>descending</value>
+					</choice>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="table-subtotal-rule">
+		<element name="table:subtotal-rule">
+			<ref name="table-subtotal-rule-attlist"/>
+			<zeroOrMore>
+				<ref name="table-subtotal-field"/>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="table-subtotal-rule-attlist">
+		<attribute name="table:group-by-field-number">
+			<ref name="nonNegativeInteger"/>
+		</attribute>
+	</define>
+	<define name="table-subtotal-field">
+		<element name="table:subtotal-field">
+			<ref name="table-subtotal-field-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="table-subtotal-field-attlist">
+		<interleave>
+			<attribute name="table:field-number">
+				<ref name="nonNegativeInteger"/>
+			</attribute>
+			<attribute name="table:function">
+				<choice>
+					<value>average</value>
+					<value>count</value>
+					<value>countnums</value>
+					<value>max</value>
+					<value>min</value>
+					<value>product</value>
+					<value>stdev</value>
+					<value>stdevp</value>
+					<value>sum</value>
+					<value>var</value>
+					<value>varp</value>
+					<ref name="string"/>
+				</choice>
+			</attribute>
+		</interleave>
+	</define>
+	<define name="table-filter">
+		<element name="table:filter">
+			<ref name="table-filter-attlist"/>
+			<choice>
+				<ref name="table-filter-condition"/>
+				<ref name="table-filter-and"/>
+				<ref name="table-filter-or"/>
+			</choice>
+		</element>
+	</define>
+	<define name="table-filter-attlist">
+		<interleave>
+			<optional>
+				<attribute name="table:target-range-address">
+					<ref name="cellRangeAddress"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:condition-source">
+					<choice>
+						<value>self</value>
+						<value>cell-range</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:condition-source-range-address">
+					<ref name="cellRangeAddress"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:display-duplicates">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="table-filter-and">
+		<element name="table:filter-and">
+			<oneOrMore>
+				<choice>
+					<ref name="table-filter-or"/>
+					<ref name="table-filter-condition"/>
+				</choice>
+			</oneOrMore>
+		</element>
+	</define>
+	<define name="table-filter-or">
+		<element name="table:filter-or">
+			<oneOrMore>
+				<choice>
+					<ref name="table-filter-and"/>
+					<ref name="table-filter-condition"/>
+				</choice>
+			</oneOrMore>
+		</element>
+	</define>
+	<define name="table-filter-condition">
+		<element name="table:filter-condition">
+			<ref name="table-filter-condition-attlist"/>
+			<zeroOrMore>
+				<ref name="table-filter-set-item"/>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="table-filter-condition-attlist">
+		<interleave>
+			<attribute name="table:field-number">
+				<ref name="nonNegativeInteger"/>
+			</attribute>
+			<attribute name="table:value">
+				<choice>
+					<ref name="string"/>
+					<ref name="double"/>
+				</choice>
+			</attribute>
+			<attribute name="table:operator">
+				<ref name="string"/>
+			</attribute>
+			<optional>
+				<attribute name="table:case-sensitive">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:data-type">
+					<choice>
+						<value>text</value>
+						<value>number</value>
+					</choice>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="table-filter-set-item">
+		<element name="table:filter-set-item">
+			<attribute name="table:value">
+				<ref name="string"/>
+			</attribute>
+			<empty/>
+		</element>
+	</define>
+	<define name="table-data-pilot-tables">
+		<element name="table:data-pilot-tables">
+			<zeroOrMore>
+				<ref name="table-data-pilot-table"/>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="table-data-pilot-table">
+		<element name="table:data-pilot-table">
+			<ref name="table-data-pilot-table-attlist"/>
+			<optional>
+				<choice>
+					<ref name="table-database-source-sql"/>
+					<ref name="table-database-source-table"/>
+					<ref name="table-database-source-query"/>
+					<ref name="table-source-service"/>
+					<ref name="table-source-cell-range"/>
+				</choice>
+			</optional>
+			<oneOrMore>
+				<ref name="table-data-pilot-field"/>
+			</oneOrMore>
+		</element>
+	</define>
+	<define name="table-data-pilot-table-attlist">
+		<interleave>
+			<attribute name="table:name">
+				<ref name="string"/>
+			</attribute>
+			<optional>
+				<attribute name="table:application-data">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:grand-total">
+					<choice>
+						<value>none</value>
+						<value>row</value>
+						<value>column</value>
+						<value>both</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:ignore-empty-rows">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:identify-categories">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<attribute name="table:target-range-address">
+				<ref name="cellRangeAddress"/>
+			</attribute>
+			<optional>
+				<attribute name="table:buttons">
+					<ref name="cellRangeAddressList"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:show-filter-button">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:drill-down-on-double-click">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="table-source-cell-range">
+		<element name="table:source-cell-range">
+			<ref name="table-source-cell-range-attlist"/>
+			<optional>
+				<ref name="table-filter"/>
+			</optional>
+		</element>
+	</define>
+	<define name="table-source-cell-range-attlist">
+		<attribute name="table:cell-range-address">
+			<ref name="cellRangeAddress"/>
+		</attribute>
+	</define>
+	<define name="table-source-service">
+		<element name="table:source-service">
+			<ref name="table-source-service-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="table-source-service-attlist">
+		<interleave>
+			<attribute name="table:name">
+				<ref name="string"/>
+			</attribute>
+			<attribute name="table:source-name">
+				<ref name="string"/>
+			</attribute>
+			<attribute name="table:object-name">
+				<ref name="string"/>
+			</attribute>
+			<optional>
+				<attribute name="table:user-name">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:password">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="table-data-pilot-field">
+		<element name="table:data-pilot-field">
+			<ref name="table-data-pilot-field-attlist"/>
+			<optional>
+				<ref name="table-data-pilot-level"/>
+			</optional>
+			<optional>
+				<ref name="table-data-pilot-field-reference"/>
+			</optional>
+			<optional>
+				<ref name="table-data-pilot-groups"/>
+			</optional>
+		</element>
+	</define>
+	<define name="table-data-pilot-field-attlist">
+		<interleave>
+			<attribute name="table:source-field-name">
+				<ref name="string"/>
+			</attribute>
+			<choice>
+				<attribute name="table:orientation">
+					<choice>
+						<value>row</value>
+						<value>column</value>
+						<value>data</value>
+						<value>hidden</value>
+					</choice>
+				</attribute>
+				<group>
+					<attribute name="table:orientation">
+						<value>page</value>
+					</attribute>
+					<attribute name="table:selected-page">
+						<ref name="string"/>
+					</attribute>
+				</group>
+			</choice>
+			<optional>
+				<attribute name="table:is-data-layout-field">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:function">
+					<choice>
+						<value>auto</value>
+						<value>average</value>
+						<value>count</value>
+						<value>countnums</value>
+						<value>max</value>
+						<value>min</value>
+						<value>product</value>
+						<value>stdev</value>
+						<value>stdevp</value>
+						<value>sum</value>
+						<value>var</value>
+						<value>varp</value>
+						<ref name="string"/>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:used-hierarchy">
+					<ref name="integer"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="table-data-pilot-level">
+		<element name="table:data-pilot-level">
+			<ref name="table-data-pilot-level-attlist"/>
+			<optional>
+				<ref name="table-data-pilot-subtotals"/>
+			</optional>
+			<optional>
+				<ref name="table-data-pilot-members"/>
+			</optional>
+			<optional>
+				<ref name="table-data-pilot-display-info"/>
+			</optional>
+			<optional>
+				<ref name="table-data-pilot-sort-info"/>
+			</optional>
+			<optional>
+				<ref name="table-data-pilot-layout-info"/>
+			</optional>
+		</element>
+	</define>
+	<define name="table-data-pilot-level-attlist">
+		<optional>
+			<attribute name="table:show-empty">
+				<ref name="boolean"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="table-data-pilot-subtotals">
+		<element name="table:data-pilot-subtotals">
+			<zeroOrMore>
+				<ref name="table-data-pilot-subtotal"/>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="table-data-pilot-subtotal">
+		<element name="table:data-pilot-subtotal">
+			<ref name="table-data-pilot-subtotal-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="table-data-pilot-subtotal-attlist">
+		<attribute name="table:function">
+			<choice>
+				<value>auto</value>
+				<value>average</value>
+				<value>count</value>
+				<value>countnums</value>
+				<value>max</value>
+				<value>min</value>
+				<value>product</value>
+				<value>stdev</value>
+				<value>stdevp</value>
+				<value>sum</value>
+				<value>var</value>
+				<value>varp</value>
+				<ref name="string"/>
+			</choice>
+		</attribute>
+	</define>
+	<define name="table-data-pilot-members">
+		<element name="table:data-pilot-members">
+			<zeroOrMore>
+				<ref name="table-data-pilot-member"/>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="table-data-pilot-member">
+		<element name="table:data-pilot-member">
+			<ref name="table-data-pilot-member-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="table-data-pilot-member-attlist">
+		<interleave>
+			<attribute name="table:name">
+				<ref name="string"/>
+			</attribute>
+			<optional>
+				<attribute name="table:display">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:show-details">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="table-data-pilot-display-info">
+		<element name="table:data-pilot-display-info">
+			<ref name="table-data-pilot-display-info-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="table-data-pilot-display-info-attlist">
+		<interleave>
+			<attribute name="table:enabled">
+				<ref name="boolean"/>
+			</attribute>
+			<attribute name="table:data-field">
+				<ref name="string"/>
+			</attribute>
+			<attribute name="table:member-count">
+				<ref name="nonNegativeInteger"/>
+			</attribute>
+			<attribute name="table:display-member-mode">
+				<choice>
+					<value>from-top</value>
+					<value>from-bottom</value>
+				</choice>
+			</attribute>
+		</interleave>
+	</define>
+	<define name="table-data-pilot-sort-info">
+		<element name="table:data-pilot-sort-info">
+			<ref name="table-data-pilot-sort-info-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="table-data-pilot-sort-info-attlist">
+		<interleave>
+			<choice>
+				<group>
+					<attribute name="table:sort-mode">
+						<value>data</value>
+					</attribute>
+					<attribute name="table:data-field">
+						<ref name="string"/>
+					</attribute>
+				</group>
+				<attribute name="table:sort-mode">
+					<choice>
+						<value>none</value>
+						<value>manual</value>
+						<value>name</value>
+					</choice>
+				</attribute>
+			</choice>
+			<attribute name="table:order">
+				<choice>
+					<value>ascending</value>
+					<value>descending</value>
+				</choice>
+			</attribute>
+		</interleave>
+	</define>
+	<define name="table-data-pilot-layout-info">
+		<element name="table:data-pilot-layout-info">
+			<ref name="table-data-pilot-layout-info-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="table-data-pilot-layout-info-attlist">
+		<interleave>
+			<attribute name="table:layout-mode">
+				<choice>
+					<value>tabular-layout</value>
+					<value>outline-subtotals-top</value>
+					<value>outline-subtotals-bottom</value>
+				</choice>
+			</attribute>
+			<attribute name="table:add-empty-lines">
+				<ref name="boolean"/>
+			</attribute>
+		</interleave>
+	</define>
+	<define name="table-data-pilot-field-reference">
+		<element name="table:data-pilot-field-reference">
+			<ref name="table-data-pilot-field-reference-attlist"/>
+		</element>
+	</define>
+	<define name="table-data-pilot-field-reference-attlist">
+		<interleave>
+			<attribute name="table:field-name">
+				<ref name="string"/>
+			</attribute>
+			<choice>
+				<group>
+					<attribute name="table:member-type">
+						<value>named</value>
+					</attribute>
+					<attribute name="table:member-name">
+						<ref name="string"/>
+					</attribute>
+				</group>
+				<attribute name="table:member-type">
+					<choice>
+						<value>previous</value>
+						<value>next</value>
+					</choice>
+				</attribute>
+			</choice>
+			<attribute name="table:type">
+				<choice>
+					<value>none</value>
+					<value>member-difference</value>
+					<value>member-percentage</value>
+					<value>member-percentage-difference</value>
+					<value>running-total</value>
+					<value>row-percentage</value>
+					<value>column-percentage</value>
+					<value>total-percentage</value>
+					<value>index</value>
+				</choice>
+			</attribute>
+		</interleave>
+	</define>
+	<define name="table-data-pilot-groups">
+		<element name="table:data-pilot-groups">
+			<ref name="table-data-pilot-groups-attlist"/>
+			<oneOrMore>
+				<ref name="table-data-pilot-group"/>
+			</oneOrMore>
+		</element>
+	</define>
+	<define name="table-data-pilot-groups-attlist">
+		<interleave>
+			<attribute name="table:source-field-name">
+				<ref name="string"/>
+			</attribute>
+			<choice>
+				<attribute name="table:date-start">
+					<choice>
+						<ref name="dateOrDateTime"/>
+						<value>auto</value>
+					</choice>
+				</attribute>
+				<attribute name="table:start">
+					<choice>
+						<ref name="double"/>
+						<value>auto</value>
+					</choice>
+				</attribute>
+			</choice>
+			<choice>
+				<attribute name="table:date-end">
+					<choice>
+						<ref name="dateOrDateTime"/>
+						<value>auto</value>
+					</choice>
+				</attribute>
+				<attribute name="table:end">
+					<choice>
+						<ref name="double"/>
+						<value>auto</value>
+					</choice>
+				</attribute>
+			</choice>
+			<attribute name="table:step">
+				<ref name="double"/>
+			</attribute>
+			<attribute name="table:grouped-by">
+				<choice>
+					<value>seconds</value>
+					<value>minutes</value>
+					<value>hours</value>
+					<value>days</value>
+					<value>months</value>
+					<value>quarters</value>
+					<value>years</value>
+				</choice>
+			</attribute>
+		</interleave>
+	</define>
+	<define name="table-data-pilot-group">
+		<element name="table:data-pilot-group">
+			<ref name="table-data-pilot-group-attlist"/>
+			<oneOrMore>
+				<ref name="table-data-pilot-group-member"/>
+			</oneOrMore>
+		</element>
+	</define>
+	<define name="table-data-pilot-group-attlist">
+		<attribute name="table:name">
+			<ref name="string"/>
+		</attribute>
+	</define>
+	<define name="table-data-pilot-group-member">
+		<element name="table:data-pilot-group-member">
+			<ref name="table-data-pilot-group-member-attlist"/>
+		</element>
+	</define>
+	<define name="table-data-pilot-group-member-attlist">
+		<attribute name="table:name">
+			<ref name="string"/>
+		</attribute>
+	</define>
+	<define name="table-consolidation">
+		<element name="table:consolidation">
+			<ref name="table-consolidation-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="table-consolidation-attlist">
+		<interleave>
+			<attribute name="table:function">
+				<choice>
+					<value>average</value>
+					<value>count</value>
+					<value>countnums</value>
+					<value>max</value>
+					<value>min</value>
+					<value>product</value>
+					<value>stdev</value>
+					<value>stdevp</value>
+					<value>sum</value>
+					<value>var</value>
+					<value>varp</value>
+					<ref name="string"/>
+				</choice>
+			</attribute>
+			<attribute name="table:source-cell-range-addresses">
+				<ref name="cellRangeAddressList"/>
+			</attribute>
+			<attribute name="table:target-cell-address">
+				<ref name="cellAddress"/>
+			</attribute>
+			<optional>
+				<attribute name="table:use-labels">
+					<choice>
+						<value>none</value>
+						<value>row</value>
+						<value>column</value>
+						<value>both</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:link-to-source-data">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="table-dde-links">
+		<element name="table:dde-links">
+			<oneOrMore>
+				<ref name="table-dde-link"/>
+			</oneOrMore>
+		</element>
+	</define>
+	<define name="table-tracked-changes">
+		<element name="table:tracked-changes">
+			<ref name="table-tracked-changes-attlist"/>
+			<zeroOrMore>
+				<choice>
+					<ref name="table-cell-content-change"/>
+					<ref name="table-insertion"/>
+					<ref name="table-deletion"/>
+					<ref name="table-movement"/>
+				</choice>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="table-tracked-changes-attlist">
+		<optional>
+			<attribute name="table:track-changes">
+				<ref name="boolean"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="table-insertion">
+		<element name="table:insertion">
+			<ref name="table-insertion-attlist"/>
+			<ref name="common-table-change-attlist"/>
+			<ref name="office-change-info"/>
+			<optional>
+				<ref name="table-dependencies"/>
+			</optional>
+			<optional>
+				<ref name="table-deletions"/>
+			</optional>
+		</element>
+	</define>
+	<define name="table-insertion-attlist">
+		<interleave>
+			<attribute name="table:type">
+				<choice>
+					<value>row</value>
+					<value>column</value>
+					<value>table</value>
+				</choice>
+			</attribute>
+			<attribute name="table:position">
+				<ref name="integer"/>
+			</attribute>
+			<optional>
+				<attribute name="table:count">
+					<ref name="positiveInteger"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:table">
+					<ref name="integer"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="table-dependencies">
+		<element name="table:dependencies">
+			<oneOrMore>
+				<ref name="table-dependency"/>
+			</oneOrMore>
+		</element>
+	</define>
+	<define name="table-dependency">
+		<element name="table:dependency">
+			<attribute name="table:id">
+				<ref name="string"/>
+			</attribute>
+			<empty/>
+		</element>
+	</define>
+	<define name="table-deletions">
+		<element name="table:deletions">
+			<oneOrMore>
+				<choice>
+					<ref name="table-cell-content-deletion"/>
+					<ref name="table-change-deletion"/>
+				</choice>
+			</oneOrMore>
+		</element>
+	</define>
+	<define name="table-cell-content-deletion">
+		<element name="table:cell-content-deletion">
+			<optional>
+				<attribute name="table:id">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<ref name="table-cell-address"/>
+			</optional>
+			<optional>
+				<ref name="table-change-track-table-cell"/>
+			</optional>
+		</element>
+	</define>
+	<define name="table-change-deletion">
+		<element name="table:change-deletion">
+			<optional>
+				<attribute name="table:id">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<empty/>
+		</element>
+	</define>
+	<define name="table-deletion">
+		<element name="table:deletion">
+			<ref name="table-deletion-attlist"/>
+			<ref name="common-table-change-attlist"/>
+			<ref name="office-change-info"/>
+			<optional>
+				<ref name="table-dependencies"/>
+			</optional>
+			<optional>
+				<ref name="table-deletions"/>
+			</optional>
+			<optional>
+				<ref name="table-cut-offs"/>
+			</optional>
+		</element>
+	</define>
+	<define name="table-deletion-attlist">
+		<interleave>
+			<attribute name="table:type">
+				<choice>
+					<value>row</value>
+					<value>column</value>
+					<value>table</value>
+				</choice>
+			</attribute>
+			<attribute name="table:position">
+				<ref name="integer"/>
+			</attribute>
+			<optional>
+				<attribute name="table:table">
+					<ref name="integer"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:multi-deletion-spanned">
+					<ref name="integer"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="table-cut-offs">
+		<element name="table:cut-offs">
+			<choice>
+				<oneOrMore>
+					<ref name="table-movement-cut-off"/>
+				</oneOrMore>
+				<group>
+					<ref name="table-insertion-cut-off"/>
+					<zeroOrMore>
+						<ref name="table-movement-cut-off"/>
+					</zeroOrMore>
+				</group>
+			</choice>
+		</element>
+	</define>
+	<define name="table-insertion-cut-off">
+		<element name="table:insertion-cut-off">
+			<ref name="table-insertion-cut-off-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="table-insertion-cut-off-attlist">
+		<interleave>
+			<attribute name="table:id">
+				<ref name="string"/>
+			</attribute>
+			<attribute name="table:position">
+				<ref name="integer"/>
+			</attribute>
+		</interleave>
+	</define>
+	<define name="table-movement-cut-off">
+		<element name="table:movement-cut-off">
+			<ref name="table-movement-cut-off-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="table-movement-cut-off-attlist">
+		<choice>
+			<attribute name="table:position">
+				<ref name="integer"/>
+			</attribute>
+			<group>
+				<attribute name="table:start-position">
+					<ref name="integer"/>
+				</attribute>
+				<attribute name="table:end-position">
+					<ref name="integer"/>
+				</attribute>
+			</group>
+		</choice>
+	</define>
+	<define name="table-movement">
+		<element name="table:movement">
+			<ref name="common-table-change-attlist"/>
+			<ref name="table-source-range-address"/>
+			<ref name="table-target-range-address"/>
+			<ref name="office-change-info"/>
+			<optional>
+				<ref name="table-dependencies"/>
+			</optional>
+			<optional>
+				<ref name="table-deletions"/>
+			</optional>
+		</element>
+	</define>
+	<define name="table-source-range-address">
+		<element name="table:source-range-address">
+			<ref name="common-table-range-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="table-target-range-address">
+		<element name="table:target-range-address">
+			<ref name="common-table-range-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="common-table-range-attlist">
+		<choice>
+			<group>
+				<ref name="common-table-cell-address-attlist"/>
+			</group>
+			<group>
+				<ref name="common-table-cell-range-address-attlist"/>
+			</group>
+		</choice>
+	</define>
+	<define name="common-table-cell-address-attlist">
+		<attribute name="table:column">
+			<ref name="integer"/>
+		</attribute>
+		<attribute name="table:row">
+			<ref name="integer"/>
+		</attribute>
+		<attribute name="table:table">
+			<ref name="integer"/>
+		</attribute>
+	</define>
+	<define name="common-table-cell-range-address-attlist">
+		<attribute name="table:start-column">
+			<ref name="integer"/>
+		</attribute>
+		<attribute name="table:start-row">
+			<ref name="integer"/>
+		</attribute>
+		<attribute name="table:start-table">
+			<ref name="integer"/>
+		</attribute>
+		<attribute name="table:end-column">
+			<ref name="integer"/>
+		</attribute>
+		<attribute name="table:end-row">
+			<ref name="integer"/>
+		</attribute>
+		<attribute name="table:end-table">
+			<ref name="integer"/>
+		</attribute>
+	</define>
+	<define name="table-change-track-table-cell">
+		<element name="table:change-track-table-cell">
+			<ref name="table-change-track-table-cell-attlist"/>
+			<zeroOrMore>
+				<ref name="text-p"/>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="table-change-track-table-cell-attlist">
+		<interleave>
+			<optional>
+				<attribute name="table:cell-address">
+					<ref name="cellAddress"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:matrix-covered">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:formula">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:number-matrix-columns-spanned">
+					<ref name="positiveInteger"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:number-matrix-rows-spanned">
+					<ref name="positiveInteger"/>
+				</attribute>
+			</optional>
+			<optional>
+				<ref name="common-value-and-type-attlist"/>
+			</optional>
+		</interleave>
+	</define>
+	<define name="table-cell-content-change">
+		<element name="table:cell-content-change">
+			<ref name="common-table-change-attlist"/>
+			<ref name="table-cell-address"/>
+			<ref name="office-change-info"/>
+			<optional>
+				<ref name="table-dependencies"/>
+			</optional>
+			<optional>
+				<ref name="table-deletions"/>
+			</optional>
+			<ref name="table-previous"/>
+		</element>
+	</define>
+	<define name="table-cell-address">
+		<element name="table:cell-address">
+			<ref name="common-table-cell-address-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="table-previous">
+		<element name="table:previous">
+			<optional>
+				<attribute name="table:id">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<ref name="table-change-track-table-cell"/>
+		</element>
+	</define>
+	<define name="common-table-change-attlist">
+		<interleave>
+			<attribute name="table:id">
+				<ref name="string"/>
+			</attribute>
+			<optional>
+				<attribute name="table:acceptance-state">
+					<choice>
+						<value>accepted</value>
+						<value>rejected</value>
+						<value>pending</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:rejecting-change-id">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="style-handout-master">
+		<element name="style:handout-master">
+			<ref name="common-presentation-header-footer-attlist"/>
+			<ref name="style-handout-master-attlist"/>
+			<zeroOrMore>
+				<ref name="shape"/>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="style-handout-master-attlist">
+		<interleave>
+			<optional>
+				<attribute name="presentation:presentation-page-layout-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+			<attribute name="style:page-layout-name">
+				<ref name="styleNameRef"/>
+			</attribute>
+			<optional>
+				<attribute name="draw:style-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="draw-layer-set">
+		<element name="draw:layer-set">
+			<zeroOrMore>
+				<ref name="draw-layer"/>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="draw-layer">
+		<element name="draw:layer">
+			<ref name="draw-layer-attlist"/>
+			<optional>
+				<ref name="svg-title"/>
+			</optional>
+			<optional>
+				<ref name="svg-desc"/>
+			</optional>
+		</element>
+	</define>
+	<define name="draw-layer-attlist">
+		<interleave>
+			<attribute name="draw:name">
+				<ref name="string"/>
+			</attribute>
+			<optional>
+				<attribute name="draw:protected">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:display">
+					<choice>
+						<value>always</value>
+						<value>screen</value>
+						<value>printer</value>
+						<value>none</value>
+					</choice>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="draw-page">
+		<element name="draw:page">
+			<ref name="common-presentation-header-footer-attlist"/>
+			<ref name="draw-page-attlist"/>
+			<optional>
+				<ref name="svg-title"/>
+			</optional>
+			<optional>
+				<ref name="svg-desc"/>
+			</optional>
+			<optional>
+				<ref name="draw-layer-set"/>
+			</optional>
+			<optional>
+				<ref name="office-forms"/>
+			</optional>
+			<zeroOrMore>
+				<ref name="shape"/>
+			</zeroOrMore>
+			<optional>
+				<choice>
+					<ref name="presentation-animations"/>
+					<ref name="animation-element"/>
+				</choice>
+			</optional>
+			<optional>
+				<ref name="presentation-notes"/>
+			</optional>
+		</element>
+	</define>
+	<define name="draw-page-attlist">
+		<interleave>
+			<optional>
+				<attribute name="draw:name">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:style-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+			<attribute name="draw:master-page-name">
+				<ref name="styleNameRef"/>
+			</attribute>
+			<optional>
+				<attribute name="presentation:presentation-page-layout-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+			<optional>
+				<group>
+					<ref name="xml-id"/>
+					<optional>
+						<attribute name="draw:id">
+							<ref name="NCName"/>
+						</attribute>
+					</optional>
+				</group>
+			</optional>
+			<optional>
+				<attribute name="draw:nav-order">
+					<ref name="IDREFS"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="common-presentation-header-footer-attlist">
+		<interleave>
+			<optional>
+				<attribute name="presentation:use-header-name">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="presentation:use-footer-name">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="presentation:use-date-time-name">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="shape">
+		<choice>
+			<ref name="shape-instance"/>
+			<ref name="draw-a"/>
+		</choice>
+	</define>
+	<define name="shape-instance">
+		<choice>
+			<ref name="draw-rect"/>
+			<ref name="draw-line"/>
+			<ref name="draw-polyline"/>
+			<ref name="draw-polygon"/>
+			<ref name="draw-regular-polygon"/>
+			<ref name="draw-path"/>
+			<ref name="draw-circle"/>
+			<ref name="draw-ellipse"/>
+			<ref name="draw-g"/>
+			<ref name="draw-page-thumbnail"/>
+			<ref name="draw-frame"/>
+			<ref name="draw-measure"/>
+			<ref name="draw-caption"/>
+			<ref name="draw-connector"/>
+			<ref name="draw-control"/>
+			<ref name="dr3d-scene"/>
+			<ref name="draw-custom-shape"/>
+		</choice>
+	</define>
+	<define name="draw-rect">
+		<element name="draw:rect">
+			<ref name="draw-rect-attlist"/>
+			<ref name="common-draw-position-attlist"/>
+			<ref name="common-draw-size-attlist"/>
+			<ref name="common-draw-shape-with-text-and-styles-attlist"/>
+			<ref name="common-draw-caption-id-attlist"/>
+			<optional>
+				<ref name="svg-title"/>
+			</optional>
+			<optional>
+				<ref name="svg-desc"/>
+			</optional>
+			<optional>
+				<ref name="office-event-listeners"/>
+			</optional>
+			<zeroOrMore>
+				<ref name="draw-glue-point"/>
+			</zeroOrMore>
+			<ref name="draw-text"/>
+		</element>
+	</define>
+	<define name="draw-rect-attlist">
+		<choice>
+			<optional>
+				<attribute name="draw:corner-radius">
+					<ref name="nonNegativeLength"/>
+				</attribute>
+			</optional>
+			<group>
+				<optional>
+					<attribute name="svg:rx">
+						<ref name="nonNegativeLength"/>
+					</attribute>
+				</optional>
+				<optional>
+					<attribute name="svg:ry">
+						<ref name="nonNegativeLength"/>
+					</attribute>
+				</optional>
+			</group>
+		</choice>
+	</define>
+	<define name="draw-line">
+		<element name="draw:line">
+			<ref name="draw-line-attlist"/>
+			<ref name="common-draw-shape-with-text-and-styles-attlist"/>
+			<ref name="common-draw-caption-id-attlist"/>
+			<optional>
+				<ref name="svg-title"/>
+			</optional>
+			<optional>
+				<ref name="svg-desc"/>
+			</optional>
+			<optional>
+				<ref name="office-event-listeners"/>
+			</optional>
+			<zeroOrMore>
+				<ref name="draw-glue-point"/>
+			</zeroOrMore>
+			<ref name="draw-text"/>
+		</element>
+	</define>
+	<define name="draw-line-attlist">
+		<interleave>
+			<attribute name="svg:x1">
+				<ref name="coordinate"/>
+			</attribute>
+			<attribute name="svg:y1">
+				<ref name="coordinate"/>
+			</attribute>
+			<attribute name="svg:x2">
+				<ref name="coordinate"/>
+			</attribute>
+			<attribute name="svg:y2">
+				<ref name="coordinate"/>
+			</attribute>
+		</interleave>
+	</define>
+	<define name="draw-polyline">
+		<element name="draw:polyline">
+			<ref name="common-draw-points-attlist"/>
+			<ref name="common-draw-position-attlist"/>
+			<ref name="common-draw-size-attlist"/>
+			<ref name="common-draw-viewbox-attlist"/>
+			<ref name="common-draw-shape-with-text-and-styles-attlist"/>
+			<ref name="common-draw-caption-id-attlist"/>
+			<optional>
+				<ref name="svg-title"/>
+			</optional>
+			<optional>
+				<ref name="svg-desc"/>
+			</optional>
+			<optional>
+				<ref name="office-event-listeners"/>
+			</optional>
+			<zeroOrMore>
+				<ref name="draw-glue-point"/>
+			</zeroOrMore>
+			<ref name="draw-text"/>
+		</element>
+	</define>
+	<define name="common-draw-points-attlist">
+		<attribute name="draw:points">
+			<ref name="points"/>
+		</attribute>
+	</define>
+	<define name="draw-polygon">
+		<element name="draw:polygon">
+			<ref name="common-draw-points-attlist"/>
+			<ref name="common-draw-position-attlist"/>
+			<ref name="common-draw-size-attlist"/>
+			<ref name="common-draw-viewbox-attlist"/>
+			<ref name="common-draw-shape-with-text-and-styles-attlist"/>
+			<ref name="common-draw-caption-id-attlist"/>
+			<optional>
+				<ref name="svg-title"/>
+			</optional>
+			<optional>
+				<ref name="svg-desc"/>
+			</optional>
+			<optional>
+				<ref name="office-event-listeners"/>
+			</optional>
+			<zeroOrMore>
+				<ref name="draw-glue-point"/>
+			</zeroOrMore>
+			<ref name="draw-text"/>
+		</element>
+	</define>
+	<define name="draw-regular-polygon">
+		<element name="draw:regular-polygon">
+			<ref name="draw-regular-polygon-attlist"/>
+			<ref name="common-draw-position-attlist"/>
+			<ref name="common-draw-size-attlist"/>
+			<ref name="common-draw-shape-with-text-and-styles-attlist"/>
+			<ref name="common-draw-caption-id-attlist"/>
+			<optional>
+				<ref name="svg-title"/>
+			</optional>
+			<optional>
+				<ref name="svg-desc"/>
+			</optional>
+			<optional>
+				<ref name="office-event-listeners"/>
+			</optional>
+			<zeroOrMore>
+				<ref name="draw-glue-point"/>
+			</zeroOrMore>
+			<ref name="draw-text"/>
+		</element>
+	</define>
+	<define name="draw-regular-polygon-attlist">
+		<interleave>
+			<choice>
+				<attribute name="draw:concave">
+					<value>false</value>
+				</attribute>
+				<group>
+					<attribute name="draw:concave">
+						<value>true</value>
+					</attribute>
+					<ref name="draw-regular-polygon-sharpness-attlist"/>
+				</group>
+			</choice>
+			<attribute name="draw:corners">
+				<ref name="positiveInteger"/>
+			</attribute>
+		</interleave>
+	</define>
+	<define name="draw-regular-polygon-sharpness-attlist">
+		<attribute name="draw:sharpness">
+			<ref name="percent"/>
+		</attribute>
+	</define>
+	<define name="draw-path">
+		<element name="draw:path">
+			<ref name="common-draw-path-data-attlist"/>
+			<ref name="common-draw-position-attlist"/>
+			<ref name="common-draw-size-attlist"/>
+			<ref name="common-draw-viewbox-attlist"/>
+			<ref name="common-draw-shape-with-text-and-styles-attlist"/>
+			<ref name="common-draw-caption-id-attlist"/>
+			<optional>
+				<ref name="svg-title"/>
+			</optional>
+			<optional>
+				<ref name="svg-desc"/>
+			</optional>
+			<optional>
+				<ref name="office-event-listeners"/>
+			</optional>
+			<zeroOrMore>
+				<ref name="draw-glue-point"/>
+			</zeroOrMore>
+			<ref name="draw-text"/>
+		</element>
+	</define>
+	<define name="common-draw-path-data-attlist">
+		<attribute name="svg:d">
+			<ref name="pathData"/>
+		</attribute>
+	</define>
+	<define name="draw-circle">
+		<element name="draw:circle">
+			<choice>
+				<group>
+					<ref name="draw-circle-attlist"/>
+					<ref name="common-draw-circle-ellipse-pos-attlist"/>
+				</group>
+				<group>
+					<ref name="common-draw-position-attlist"/>
+					<ref name="common-draw-size-attlist"/>
+				</group>
+			</choice>
+			<ref name="common-draw-circle-ellipse-attlist"/>
+			<ref name="common-draw-shape-with-text-and-styles-attlist"/>
+			<ref name="common-draw-caption-id-attlist"/>
+			<optional>
+				<ref name="svg-title"/>
+			</optional>
+			<optional>
+				<ref name="svg-desc"/>
+			</optional>
+			<optional>
+				<ref name="office-event-listeners"/>
+			</optional>
+			<zeroOrMore>
+				<ref name="draw-glue-point"/>
+			</zeroOrMore>
+			<ref name="draw-text"/>
+		</element>
+	</define>
+	<define name="common-draw-circle-ellipse-pos-attlist">
+		<attribute name="svg:cx">
+			<ref name="coordinate"/>
+		</attribute>
+		<attribute name="svg:cy">
+			<ref name="coordinate"/>
+		</attribute>
+	</define>
+	<define name="draw-circle-attlist">
+		<attribute name="svg:r">
+			<ref name="length"/>
+		</attribute>
+	</define>
+	<define name="common-draw-circle-ellipse-attlist">
+		<interleave>
+			<optional>
+				<attribute name="draw:kind">
+					<choice>
+						<value>full</value>
+						<value>section</value>
+						<value>cut</value>
+						<value>arc</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:start-angle">
+					<ref name="angle"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:end-angle">
+					<ref name="angle"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="draw-ellipse">
+		<element name="draw:ellipse">
+			<choice>
+				<group>
+					<ref name="draw-ellipse-attlist"/>
+					<ref name="common-draw-circle-ellipse-pos-attlist"/>
+				</group>
+				<group>
+					<ref name="common-draw-position-attlist"/>
+					<ref name="common-draw-size-attlist"/>
+				</group>
+			</choice>
+			<ref name="common-draw-circle-ellipse-attlist"/>
+			<ref name="common-draw-shape-with-text-and-styles-attlist"/>
+			<ref name="common-draw-caption-id-attlist"/>
+			<optional>
+				<ref name="svg-title"/>
+			</optional>
+			<optional>
+				<ref name="svg-desc"/>
+			</optional>
+			<optional>
+				<ref name="office-event-listeners"/>
+			</optional>
+			<zeroOrMore>
+				<ref name="draw-glue-point"/>
+			</zeroOrMore>
+			<ref name="draw-text"/>
+		</element>
+	</define>
+	<define name="draw-ellipse-attlist">
+		<attribute name="svg:rx">
+			<ref name="length"/>
+		</attribute>
+		<attribute name="svg:ry">
+			<ref name="length"/>
+		</attribute>
+	</define>
+	<define name="draw-connector">
+		<element name="draw:connector">
+			<ref name="draw-connector-attlist"/>
+			<ref name="common-draw-shape-with-text-and-styles-attlist"/>
+			<ref name="common-draw-caption-id-attlist"/>
+			<ref name="common-draw-viewbox-attlist"/>
+			<optional>
+				<ref name="svg-title"/>
+			</optional>
+			<optional>
+				<ref name="svg-desc"/>
+			</optional>
+			<optional>
+				<ref name="office-event-listeners"/>
+			</optional>
+			<zeroOrMore>
+				<ref name="draw-glue-point"/>
+			</zeroOrMore>
+			<ref name="draw-text"/>
+		</element>
+	</define>
+	<define name="draw-connector-attlist">
+		<interleave>
+			<optional>
+				<attribute name="draw:type">
+					<choice>
+						<value>standard</value>
+						<value>lines</value>
+						<value>line</value>
+						<value>curve</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="svg:x1">
+					<ref name="coordinate"/>
+				</attribute>
+				<attribute name="svg:y1">
+					<ref name="coordinate"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:start-shape">
+					<ref name="IDREF"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:start-glue-point">
+					<ref name="nonNegativeInteger"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="svg:x2">
+					<ref name="coordinate"/>
+				</attribute>
+				<attribute name="svg:y2">
+					<ref name="coordinate"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:end-shape">
+					<ref name="IDREF"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:end-glue-point">
+					<ref name="nonNegativeInteger"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:line-skew">
+					<list>
+						<ref name="length"/>
+						<optional>
+							<ref name="length"/>
+							<optional>
+								<ref name="length"/>
+							</optional>
+						</optional>
+					</list>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="svg:d">
+					<ref name="pathData"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="draw-caption">
+		<element name="draw:caption">
+			<ref name="draw-caption-attlist"/>
+			<ref name="common-draw-position-attlist"/>
+			<ref name="common-draw-size-attlist"/>
+			<ref name="common-draw-shape-with-text-and-styles-attlist"/>
+			<ref name="common-draw-caption-id-attlist"/>
+			<optional>
+				<ref name="svg-title"/>
+			</optional>
+			<optional>
+				<ref name="svg-desc"/>
+			</optional>
+			<optional>
+				<ref name="office-event-listeners"/>
+			</optional>
+			<zeroOrMore>
+				<ref name="draw-glue-point"/>
+			</zeroOrMore>
+			<ref name="draw-text"/>
+		</element>
+	</define>
+	<define name="draw-caption-attlist">
+		<interleave>
+			<optional>
+				<attribute name="draw:caption-point-x">
+					<ref name="coordinate"/>
+				</attribute>
+				<attribute name="draw:caption-point-y">
+					<ref name="coordinate"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:corner-radius">
+					<ref name="nonNegativeLength"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="draw-measure">
+		<element name="draw:measure">
+			<ref name="draw-measure-attlist"/>
+			<ref name="common-draw-shape-with-text-and-styles-attlist"/>
+			<ref name="common-draw-caption-id-attlist"/>
+			<optional>
+				<ref name="svg-title"/>
+			</optional>
+			<optional>
+				<ref name="svg-desc"/>
+			</optional>
+			<optional>
+				<ref name="office-event-listeners"/>
+			</optional>
+			<zeroOrMore>
+				<ref name="draw-glue-point"/>
+			</zeroOrMore>
+			<ref name="draw-text"/>
+		</element>
+	</define>
+	<define name="draw-measure-attlist">
+		<interleave>
+			<attribute name="svg:x1">
+				<ref name="coordinate"/>
+			</attribute>
+			<attribute name="svg:y1">
+				<ref name="coordinate"/>
+			</attribute>
+			<attribute name="svg:x2">
+				<ref name="coordinate"/>
+			</attribute>
+			<attribute name="svg:y2">
+				<ref name="coordinate"/>
+			</attribute>
+		</interleave>
+	</define>
+	<define name="draw-control">
+		<element name="draw:control">
+			<ref name="draw-control-attlist"/>
+			<ref name="common-draw-position-attlist"/>
+			<ref name="common-draw-size-attlist"/>
+			<ref name="common-draw-shape-with-text-and-styles-attlist"/>
+			<ref name="common-draw-caption-id-attlist"/>
+			<optional>
+				<ref name="svg-title"/>
+			</optional>
+			<optional>
+				<ref name="svg-desc"/>
+			</optional>
+			<zeroOrMore>
+				<ref name="draw-glue-point"/>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="draw-control-attlist">
+		<attribute name="draw:control">
+			<ref name="IDREF"/>
+		</attribute>
+	</define>
+	<define name="draw-page-thumbnail">
+		<element name="draw:page-thumbnail">
+			<ref name="draw-page-thumbnail-attlist"/>
+			<ref name="common-draw-position-attlist"/>
+			<ref name="common-draw-size-attlist"/>
+			<ref name="presentation-shape-attlist"/>
+			<ref name="common-draw-shape-with-styles-attlist"/>
+			<ref name="common-draw-caption-id-attlist"/>
+			<optional>
+				<ref name="svg-title"/>
+			</optional>
+			<optional>
+				<ref name="svg-desc"/>
+			</optional>
+		</element>
+	</define>
+	<define name="draw-page-thumbnail-attlist">
+		<optional>
+			<attribute name="draw:page-number">
+				<ref name="positiveInteger"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="draw-g">
+		<element name="draw:g">
+			<ref name="draw-g-attlist"/>
+			<ref name="common-draw-z-index-attlist"/>
+			<ref name="common-draw-name-attlist"/>
+			<ref name="common-draw-id-attlist"/>
+			<ref name="common-draw-style-name-attlist"/>
+			<ref name="common-text-spreadsheet-shape-attlist"/>
+			<ref name="common-draw-caption-id-attlist"/>
+			<optional>
+				<ref name="svg-title"/>
+			</optional>
+			<optional>
+				<ref name="svg-desc"/>
+			</optional>
+			<optional>
+				<ref name="office-event-listeners"/>
+			</optional>
+			<zeroOrMore>
+				<ref name="draw-glue-point"/>
+			</zeroOrMore>
+			<zeroOrMore>
+				<ref name="shape"/>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="draw-g-attlist">
+		<optional>
+			<attribute name="svg:y">
+				<ref name="coordinate"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-draw-name-attlist">
+		<optional>
+			<attribute name="draw:name">
+				<ref name="string"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-draw-caption-id-attlist">
+		<optional>
+			<attribute name="draw:caption-id">
+				<ref name="IDREF"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-draw-position-attlist">
+		<optional>
+			<attribute name="svg:x">
+				<ref name="coordinate"/>
+			</attribute>
+		</optional>
+		<optional>
+			<attribute name="svg:y">
+				<ref name="coordinate"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-draw-size-attlist">
+		<optional>
+			<attribute name="svg:width">
+				<ref name="length"/>
+			</attribute>
+		</optional>
+		<optional>
+			<attribute name="svg:height">
+				<ref name="length"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-draw-transform-attlist">
+		<optional>
+			<attribute name="draw:transform">
+				<ref name="string"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-draw-viewbox-attlist">
+		<attribute name="svg:viewBox">
+			<list>
+				<ref name="integer"/>
+				<ref name="integer"/>
+				<ref name="integer"/>
+				<ref name="integer"/>
+			</list>
+		</attribute>
+	</define>
+	<define name="common-draw-style-name-attlist">
+		<choice>
+			<group>
+				<optional>
+					<attribute name="draw:style-name">
+						<ref name="styleNameRef"/>
+					</attribute>
+				</optional>
+				<optional>
+					<attribute name="draw:class-names">
+						<ref name="styleNameRefs"/>
+					</attribute>
+				</optional>
+			</group>
+			<group>
+				<optional>
+					<attribute name="presentation:style-name">
+						<ref name="styleNameRef"/>
+					</attribute>
+				</optional>
+				<optional>
+					<attribute name="presentation:class-names">
+						<ref name="styleNameRefs"/>
+					</attribute>
+				</optional>
+			</group>
+		</choice>
+	</define>
+	<define name="common-draw-text-style-name-attlist">
+		<optional>
+			<attribute name="draw:text-style-name">
+				<ref name="styleNameRef"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-draw-layer-name-attlist">
+		<optional>
+			<attribute name="draw:layer">
+				<ref name="string"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-draw-id-attlist">
+		<optional>
+			<group>
+				<ref name="xml-id"/>
+				<optional>
+					<attribute name="draw:id">
+						<ref name="NCName"/>
+					</attribute>
+				</optional>
+			</group>
+		</optional>
+	</define>
+	<define name="common-draw-z-index-attlist">
+		<optional>
+			<attribute name="draw:z-index">
+				<ref name="nonNegativeInteger"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-text-spreadsheet-shape-attlist">
+		<interleave>
+			<optional>
+				<attribute name="table:end-cell-address">
+					<ref name="cellAddress"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:end-x">
+					<ref name="coordinate"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:end-y">
+					<ref name="coordinate"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:table-background">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<ref name="common-text-anchor-attlist"/>
+		</interleave>
+	</define>
+	<define name="common-text-anchor-attlist">
+		<interleave>
+			<optional>
+				<attribute name="text:anchor-type">
+					<choice>
+						<value>page</value>
+						<value>frame</value>
+						<value>paragraph</value>
+						<value>char</value>
+						<value>as-char</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:anchor-page-number">
+					<ref name="positiveInteger"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="draw-text">
+		<zeroOrMore>
+			<choice>
+				<ref name="text-p"/>
+				<ref name="text-list"/>
+			</choice>
+		</zeroOrMore>
+	</define>
+	<define name="common-draw-shape-with-styles-attlist">
+		<ref name="common-draw-z-index-attlist"/>
+		<ref name="common-draw-id-attlist"/>
+		<ref name="common-draw-layer-name-attlist"/>
+		<ref name="common-draw-style-name-attlist"/>
+		<ref name="common-draw-transform-attlist"/>
+		<ref name="common-draw-name-attlist"/>
+		<ref name="common-text-spreadsheet-shape-attlist"/>
+	</define>
+	<define name="common-draw-shape-with-text-and-styles-attlist">
+		<ref name="common-draw-shape-with-styles-attlist"/>
+		<ref name="common-draw-text-style-name-attlist"/>
+	</define>
+	<define name="draw-glue-point">
+		<element name="draw:glue-point">
+			<ref name="draw-glue-point-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="draw-glue-point-attlist">
+		<interleave>
+			<attribute name="draw:id">
+				<ref name="nonNegativeInteger"/>
+			</attribute>
+			<attribute name="svg:x">
+				<choice>
+					<ref name="distance"/>
+					<ref name="percent"/>
+				</choice>
+			</attribute>
+			<attribute name="svg:y">
+				<choice>
+					<ref name="distance"/>
+					<ref name="percent"/>
+				</choice>
+			</attribute>
+			<optional>
+				<attribute name="draw:align">
+					<choice>
+						<value>top-left</value>
+						<value>top</value>
+						<value>top-right</value>
+						<value>left</value>
+						<value>center</value>
+						<value>right</value>
+						<value>bottom-left</value>
+						<value>bottom-right</value>
+					</choice>
+				</attribute>
+			</optional>
+			<attribute name="draw:escape-direction">
+				<choice>
+					<value>auto</value>
+					<value>left</value>
+					<value>right</value>
+					<value>up</value>
+					<value>down</value>
+					<value>horizontal</value>
+					<value>vertical</value>
+				</choice>
+			</attribute>
+		</interleave>
+	</define>
+	<define name="svg-title">
+		<element name="svg:title">
+			<text/>
+		</element>
+	</define>
+	<define name="svg-desc">
+		<element name="svg:desc">
+			<text/>
+		</element>
+	</define>
+	<define name="draw-frame">
+		<element name="draw:frame">
+			<ref name="common-draw-shape-with-text-and-styles-attlist"/>
+			<ref name="common-draw-position-attlist"/>
+			<ref name="common-draw-rel-size-attlist"/>
+			<ref name="common-draw-caption-id-attlist"/>
+			<ref name="presentation-shape-attlist"/>
+			<ref name="draw-frame-attlist"/>
+			<zeroOrMore>
+				<choice>
+					<ref name="draw-text-box"/>
+					<ref name="draw-image"/>
+					<ref name="draw-object"/>
+					<ref name="draw-object-ole"/>
+					<ref name="draw-applet"/>
+					<ref name="draw-floating-frame"/>
+					<ref name="draw-plugin"/>
+					<ref name="table-table"/>
+				</choice>
+			</zeroOrMore>
+			<optional>
+				<ref name="office-event-listeners"/>
+			</optional>
+			<zeroOrMore>
+				<ref name="draw-glue-point"/>
+			</zeroOrMore>
+			<optional>
+				<ref name="draw-image-map"/>
+			</optional>
+			<optional>
+				<ref name="svg-title"/>
+			</optional>
+			<optional>
+				<ref name="svg-desc"/>
+			</optional>
+			<optional>
+				<choice>
+					<ref name="draw-contour-polygon"/>
+					<ref name="draw-contour-path"/>
+				</choice>
+			</optional>
+		</element>
+	</define>
+	<define name="common-draw-rel-size-attlist">
+		<ref name="common-draw-size-attlist"/>
+		<optional>
+			<attribute name="style:rel-width">
+				<choice>
+					<ref name="percent"/>
+					<value>scale</value>
+					<value>scale-min</value>
+				</choice>
+			</attribute>
+		</optional>
+		<optional>
+			<attribute name="style:rel-height">
+				<choice>
+					<ref name="percent"/>
+					<value>scale</value>
+					<value>scale-min</value>
+				</choice>
+			</attribute>
+		</optional>
+	</define>
+	<define name="draw-frame-attlist">
+		<optional>
+			<attribute name="draw:copy-of">
+				<ref name="string"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="draw-text-box">
+		<element name="draw:text-box">
+			<ref name="draw-text-box-attlist"/>
+			<zeroOrMore>
+				<ref name="text-content"/>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="draw-text-box-attlist">
+		<interleave>
+			<optional>
+				<attribute name="draw:chain-next-name">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:corner-radius">
+					<ref name="nonNegativeLength"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="fo:min-height">
+					<choice>
+						<ref name="length"/>
+						<ref name="percent"/>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="fo:min-width">
+					<choice>
+						<ref name="length"/>
+						<ref name="percent"/>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="fo:max-height">
+					<choice>
+						<ref name="length"/>
+						<ref name="percent"/>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="fo:max-width">
+					<choice>
+						<ref name="length"/>
+						<ref name="percent"/>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<group>
+					<ref name="xml-id"/>
+					<optional>
+						<attribute name="text:id">
+							<ref name="NCName"/>
+						</attribute>
+					</optional>
+				</group>
+			</optional>
+		</interleave>
+	</define>
+	<define name="draw-image">
+		<element name="draw:image">
+			<ref name="draw-image-attlist"/>
+			<choice>
+				<ref name="common-draw-data-attlist"/>
+				<ref name="office-binary-data"/>
+			</choice>
+			<ref name="draw-text"/>
+		</element>
+	</define>
+	<define name="common-draw-data-attlist">
+		<group>
+			<attribute name="xlink:type">
+				<value>simple</value>
+			</attribute>
+			<attribute name="xlink:href">
+				<ref name="anyIRI"/>
+			</attribute>
+			<optional>
+				<attribute name="xlink:show">
+					<value>embed</value>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="xlink:actuate">
+					<value>onLoad</value>
+				</attribute>
+			</optional>
+		</group>
+	</define>
+	<define name="office-binary-data">
+		<element name="office:binary-data">
+			<ref name="base64Binary"/>
+		</element>
+	</define>
+	<define name="draw-image-attlist">
+		<interleave>
+			<optional>
+				<attribute name="draw:filter-name">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<ref name="xml-id"/>
+			</optional>
+		</interleave>
+	</define>
+	<define name="draw-object">
+		<element name="draw:object">
+			<ref name="draw-object-attlist"/>
+			<choice>
+				<ref name="common-draw-data-attlist"/>
+				<ref name="office-document"/>
+				<ref name="math-math"/>
+			</choice>
+		</element>
+	</define>
+	<define name="draw-object-ole">
+		<element name="draw:object-ole">
+			<ref name="draw-object-ole-attlist"/>
+			<choice>
+				<ref name="common-draw-data-attlist"/>
+				<ref name="office-binary-data"/>
+			</choice>
+		</element>
+	</define>
+	<define name="draw-object-attlist">
+		<interleave>
+			<optional>
+				<attribute name="draw:notify-on-update-of-ranges">
+					<choice>
+						<ref name="cellRangeAddressList"/>
+						<ref name="string"/>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<ref name="xml-id"/>
+			</optional>
+		</interleave>
+	</define>
+	<define name="draw-object-ole-attlist">
+		<interleave>
+			<optional>
+				<attribute name="draw:class-id">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<ref name="xml-id"/>
+			</optional>
+		</interleave>
+	</define>
+	<define name="draw-applet">
+		<element name="draw:applet">
+			<ref name="draw-applet-attlist"/>
+			<optional>
+				<ref name="common-draw-data-attlist"/>
+			</optional>
+			<zeroOrMore>
+				<ref name="draw-param"/>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="draw-applet-attlist">
+		<interleave>
+			<optional>
+				<attribute name="draw:code">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:object">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:archive">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:may-script">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<ref name="xml-id"/>
+			</optional>
+		</interleave>
+	</define>
+	<define name="draw-plugin">
+		<element name="draw:plugin">
+			<ref name="draw-plugin-attlist"/>
+			<ref name="common-draw-data-attlist"/>
+			<zeroOrMore>
+				<ref name="draw-param"/>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="draw-plugin-attlist">
+		<interleave>
+			<optional>
+				<attribute name="draw:mime-type">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<ref name="xml-id"/>
+			</optional>
+		</interleave>
+	</define>
+	<define name="draw-param">
+		<element name="draw:param">
+			<ref name="draw-param-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="draw-param-attlist">
+		<interleave>
+			<optional>
+				<attribute name="draw:name">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:value">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="draw-floating-frame">
+		<element name="draw:floating-frame">
+			<ref name="draw-floating-frame-attlist"/>
+			<ref name="common-draw-data-attlist"/>
+		</element>
+	</define>
+	<define name="draw-floating-frame-attlist">
+		<interleave>
+			<optional>
+				<attribute name="draw:frame-name">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<ref name="xml-id"/>
+			</optional>
+		</interleave>
+	</define>
+	<define name="draw-contour-polygon">
+		<element name="draw:contour-polygon">
+			<ref name="common-contour-attlist"/>
+			<ref name="common-draw-size-attlist"/>
+			<ref name="common-draw-viewbox-attlist"/>
+			<ref name="common-draw-points-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="draw-contour-path">
+		<element name="draw:contour-path">
+			<ref name="common-contour-attlist"/>
+			<ref name="common-draw-size-attlist"/>
+			<ref name="common-draw-viewbox-attlist"/>
+			<ref name="common-draw-path-data-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="common-contour-attlist">
+		<attribute name="draw:recreate-on-edit">
+			<ref name="boolean"/>
+		</attribute>
+	</define>
+	<define name="draw-a">
+		<element name="draw:a">
+			<ref name="draw-a-attlist"/>
+			<ref name="shape-instance"/>
+		</element>
+	</define>
+	<define name="draw-a-attlist">
+		<interleave>
+			<attribute name="xlink:type">
+				<value>simple</value>
+			</attribute>
+			<attribute name="xlink:href">
+				<ref name="anyIRI"/>
+			</attribute>
+			<optional>
+				<attribute name="xlink:actuate">
+					<value>onRequest</value>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="office:target-frame-name">
+					<ref name="targetFrameName"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="xlink:show">
+					<choice>
+						<value>new</value>
+						<value>replace</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="office:name">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="office:title">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="office:server-map">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<ref name="xml-id"/>
+			</optional>
+		</interleave>
+	</define>
+	<define name="draw-image-map">
+		<element name="draw:image-map">
+			<zeroOrMore>
+				<choice>
+					<ref name="draw-area-rectangle"/>
+					<ref name="draw-area-circle"/>
+					<ref name="draw-area-polygon"/>
+				</choice>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="draw-area-rectangle">
+		<element name="draw:area-rectangle">
+			<ref name="common-draw-area-attlist"/>
+			<attribute name="svg:x">
+				<ref name="coordinate"/>
+			</attribute>
+			<attribute name="svg:y">
+				<ref name="coordinate"/>
+			</attribute>
+			<attribute name="svg:width">
+				<ref name="length"/>
+			</attribute>
+			<attribute name="svg:height">
+				<ref name="length"/>
+			</attribute>
+			<optional>
+				<ref name="svg-title"/>
+			</optional>
+			<optional>
+				<ref name="svg-desc"/>
+			</optional>
+			<optional>
+				<ref name="office-event-listeners"/>
+			</optional>
+		</element>
+	</define>
+	<define name="draw-area-circle">
+		<element name="draw:area-circle">
+			<ref name="common-draw-area-attlist"/>
+			<attribute name="svg:cx">
+				<ref name="coordinate"/>
+			</attribute>
+			<attribute name="svg:cy">
+				<ref name="coordinate"/>
+			</attribute>
+			<attribute name="svg:r">
+				<ref name="length"/>
+			</attribute>
+			<optional>
+				<ref name="svg-title"/>
+			</optional>
+			<optional>
+				<ref name="svg-desc"/>
+			</optional>
+			<optional>
+				<ref name="office-event-listeners"/>
+			</optional>
+		</element>
+	</define>
+	<define name="draw-area-polygon">
+		<element name="draw:area-polygon">
+			<ref name="common-draw-area-attlist"/>
+			<attribute name="svg:x">
+				<ref name="coordinate"/>
+			</attribute>
+			<attribute name="svg:y">
+				<ref name="coordinate"/>
+			</attribute>
+			<attribute name="svg:width">
+				<ref name="length"/>
+			</attribute>
+			<attribute name="svg:height">
+				<ref name="length"/>
+			</attribute>
+			<ref name="common-draw-viewbox-attlist"/>
+			<ref name="common-draw-points-attlist"/>
+			<optional>
+				<ref name="svg-title"/>
+			</optional>
+			<optional>
+				<ref name="svg-desc"/>
+			</optional>
+			<optional>
+				<ref name="office-event-listeners"/>
+			</optional>
+		</element>
+	</define>
+	<define name="common-draw-area-attlist">
+		<interleave>
+			<optional>
+				<attribute name="xlink:type">
+					<value>simple</value>
+				</attribute>
+				<attribute name="xlink:href">
+					<ref name="anyIRI"/>
+				</attribute>
+				<optional>
+					<attribute name="office:target-frame-name">
+						<ref name="targetFrameName"/>
+					</attribute>
+				</optional>
+				<optional>
+					<attribute name="xlink:show">
+						<choice>
+							<value>new</value>
+							<value>replace</value>
+						</choice>
+					</attribute>
+				</optional>
+			</optional>
+			<optional>
+				<attribute name="office:name">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:nohref">
+					<value>nohref</value>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="dr3d-scene">
+		<element name="dr3d:scene">
+			<ref name="dr3d-scene-attlist"/>
+			<ref name="common-draw-position-attlist"/>
+			<ref name="common-draw-size-attlist"/>
+			<ref name="common-draw-style-name-attlist"/>
+			<ref name="common-draw-z-index-attlist"/>
+			<ref name="common-draw-id-attlist"/>
+			<ref name="common-draw-layer-name-attlist"/>
+			<ref name="common-text-spreadsheet-shape-attlist"/>
+			<ref name="common-dr3d-transform-attlist"/>
+			<ref name="common-draw-caption-id-attlist"/>
+			<optional>
+				<ref name="svg-title"/>
+			</optional>
+			<optional>
+				<ref name="svg-desc"/>
+			</optional>
+			<zeroOrMore>
+				<ref name="dr3d-light"/>
+			</zeroOrMore>
+			<zeroOrMore>
+				<ref name="shapes3d"/>
+			</zeroOrMore>
+			<zeroOrMore>
+				<ref name="draw-glue-point"/>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="shapes3d">
+		<choice>
+			<ref name="dr3d-scene"/>
+			<ref name="dr3d-extrude"/>
+			<ref name="dr3d-sphere"/>
+			<ref name="dr3d-rotate"/>
+			<ref name="dr3d-cube"/>
+		</choice>
+	</define>
+	<define name="dr3d-scene-attlist">
+		<interleave>
+			<optional>
+				<attribute name="dr3d:vrp">
+					<ref name="vector3D"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="dr3d:vpn">
+					<ref name="vector3D"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="dr3d:vup">
+					<ref name="vector3D"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="dr3d:projection">
+					<choice>
+						<value>parallel</value>
+						<value>perspective</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="dr3d:distance">
+					<ref name="length"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="dr3d:focal-length">
+					<ref name="length"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="dr3d:shadow-slant">
+					<ref name="angle"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="dr3d:shade-mode">
+					<choice>
+						<value>flat</value>
+						<value>phong</value>
+						<value>gouraud</value>
+						<value>draft</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="dr3d:ambient-color">
+					<ref name="color"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="dr3d:lighting-mode">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="common-dr3d-transform-attlist">
+		<optional>
+			<attribute name="dr3d:transform">
+				<ref name="string"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="dr3d-light">
+		<element name="dr3d:light">
+			<ref name="dr3d-light-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="dr3d-light-attlist">
+		<interleave>
+			<optional>
+				<attribute name="dr3d:diffuse-color">
+					<ref name="color"/>
+				</attribute>
+			</optional>
+			<attribute name="dr3d:direction">
+				<ref name="vector3D"/>
+			</attribute>
+			<optional>
+				<attribute name="dr3d:enabled">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="dr3d:specular">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="dr3d-cube">
+		<element name="dr3d:cube">
+			<ref name="dr3d-cube-attlist"/>
+			<ref name="common-draw-z-index-attlist"/>
+			<ref name="common-draw-id-attlist"/>
+			<ref name="common-draw-layer-name-attlist"/>
+			<ref name="common-draw-style-name-attlist"/>
+			<ref name="common-dr3d-transform-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="dr3d-cube-attlist">
+		<optional>
+			<attribute name="dr3d:min-edge">
+				<ref name="vector3D"/>
+			</attribute>
+		</optional>
+		<optional>
+			<attribute name="dr3d:max-edge">
+				<ref name="vector3D"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="dr3d-sphere">
+		<element name="dr3d:sphere">
+			<ref name="dr3d-sphere-attlist"/>
+			<ref name="common-draw-z-index-attlist"/>
+			<ref name="common-draw-id-attlist"/>
+			<ref name="common-draw-layer-name-attlist"/>
+			<ref name="common-draw-style-name-attlist"/>
+			<ref name="common-dr3d-transform-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="dr3d-sphere-attlist">
+		<interleave>
+			<optional>
+				<attribute name="dr3d:center">
+					<ref name="vector3D"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="dr3d:size">
+					<ref name="vector3D"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="dr3d-extrude">
+		<element name="dr3d:extrude">
+			<ref name="common-draw-path-data-attlist"/>
+			<ref name="common-draw-viewbox-attlist"/>
+			<ref name="common-draw-id-attlist"/>
+			<ref name="common-draw-z-index-attlist"/>
+			<ref name="common-draw-layer-name-attlist"/>
+			<ref name="common-draw-style-name-attlist"/>
+			<ref name="common-dr3d-transform-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="dr3d-rotate">
+		<element name="dr3d:rotate">
+			<ref name="common-draw-viewbox-attlist"/>
+			<ref name="common-draw-path-data-attlist"/>
+			<ref name="common-draw-z-index-attlist"/>
+			<ref name="common-draw-id-attlist"/>
+			<ref name="common-draw-layer-name-attlist"/>
+			<ref name="common-draw-style-name-attlist"/>
+			<ref name="common-dr3d-transform-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="draw-custom-shape">
+		<element name="draw:custom-shape">
+			<ref name="draw-custom-shape-attlist"/>
+			<ref name="common-draw-position-attlist"/>
+			<ref name="common-draw-size-attlist"/>
+			<ref name="common-draw-shape-with-text-and-styles-attlist"/>
+			<ref name="common-draw-caption-id-attlist"/>
+			<optional>
+				<ref name="svg-title"/>
+			</optional>
+			<optional>
+				<ref name="svg-desc"/>
+			</optional>
+			<optional>
+				<ref name="office-event-listeners"/>
+			</optional>
+			<zeroOrMore>
+				<ref name="draw-glue-point"/>
+			</zeroOrMore>
+			<ref name="draw-text"/>
+			<optional>
+				<ref name="draw-enhanced-geometry"/>
+			</optional>
+		</element>
+	</define>
+	<define name="draw-custom-shape-attlist">
+		<interleave>
+			<optional>
+				<attribute name="draw:engine">
+					<ref name="namespacedToken"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:data">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="draw-enhanced-geometry">
+		<element name="draw:enhanced-geometry">
+			<ref name="draw-enhanced-geometry-attlist"/>
+			<zeroOrMore>
+				<ref name="draw-equation"/>
+			</zeroOrMore>
+			<zeroOrMore>
+				<ref name="draw-handle"/>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="draw-enhanced-geometry-attlist">
+		<interleave>
+			<optional>
+				<attribute name="draw:type">
+					<ref name="custom-shape-type"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="svg:viewBox">
+					<list>
+						<ref name="integer"/>
+						<ref name="integer"/>
+						<ref name="integer"/>
+						<ref name="integer"/>
+					</list>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:mirror-vertical">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:mirror-horizontal">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:text-rotate-angle">
+					<ref name="angle"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:extrusion-allowed">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:text-path-allowed">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:concentric-gradient-fill-allowed">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:extrusion">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:extrusion-brightness">
+					<ref name="zeroToHundredPercent"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:extrusion-depth">
+					<list>
+						<ref name="length"/>
+						<ref name="double"/>
+					</list>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:extrusion-diffusion">
+					<ref name="percent"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:extrusion-number-of-line-segments">
+					<ref name="integer"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:extrusion-light-face">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:extrusion-first-light-harsh">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:extrusion-second-light-harsh">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:extrusion-first-light-level">
+					<ref name="zeroToHundredPercent"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:extrusion-second-light-level">
+					<ref name="zeroToHundredPercent"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:extrusion-first-light-direction">
+					<ref name="vector3D"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:extrusion-second-light-direction">
+					<ref name="vector3D"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:extrusion-metal">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="dr3d:shade-mode">
+					<choice>
+						<value>flat</value>
+						<value>phong</value>
+						<value>gouraud</value>
+						<value>draft</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:extrusion-rotation-angle">
+					<list>
+						<ref name="angle"/>
+						<ref name="angle"/>
+					</list>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:extrusion-rotation-center">
+					<ref name="vector3D"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:extrusion-shininess">
+					<ref name="zeroToHundredPercent"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:extrusion-skew">
+					<list>
+						<ref name="double"/>
+						<ref name="angle"/>
+					</list>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:extrusion-specularity">
+					<ref name="zeroToHundredPercent"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="dr3d:projection">
+					<choice>
+						<value>parallel</value>
+						<value>perspective</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:extrusion-viewpoint">
+					<ref name="point3D"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:extrusion-origin">
+					<list>
+						<ref name="extrusionOrigin"/>
+						<ref name="extrusionOrigin"/>
+					</list>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:extrusion-color">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:enhanced-path">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:path-stretchpoint-x">
+					<ref name="double"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:path-stretchpoint-y">
+					<ref name="double"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:text-areas">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:glue-points">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:glue-point-type">
+					<choice>
+						<value>none</value>
+						<value>segments</value>
+						<value>rectangle</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:glue-point-leaving-directions">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:text-path">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:text-path-mode">
+					<choice>
+						<value>normal</value>
+						<value>path</value>
+						<value>shape</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:text-path-scale">
+					<choice>
+						<value>path</value>
+						<value>shape</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:text-path-same-letter-heights">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:modifiers">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="custom-shape-type">
+		<choice>
+			<value>non-primitive</value>
+			<ref name="string"/>
+		</choice>
+	</define>
+	<define name="point3D">
+		<data type="string">
+			<param name="pattern">\([ ]*-?([0-9]+(\.[0-9]*)?|\.[0-9]+)((cm)|(mm)|(in)|(pt)|(pc))([ ]+-?([0-9]+(\.[0-9]*)?|\.[0-9]+)((cm)|(mm)|(in)|(pt)|(pc))){2}[ ]*\)</param>
+		</data>
+	</define>
+	<define name="extrusionOrigin">
+		<data type="double">
+			<param name="minInclusive">-0.5</param>
+			<param name="maxInclusive">0.5</param>
+		</data>
+	</define>
+	<define name="draw-equation">
+		<element name="draw:equation">
+			<ref name="draw-equation-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="draw-equation-attlist">
+		<interleave>
+			<optional>
+				<attribute name="draw:name">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:formula">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="draw-handle">
+		<element name="draw:handle">
+			<ref name="draw-handle-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="draw-handle-attlist">
+		<interleave>
+			<optional>
+				<attribute name="draw:handle-mirror-vertical">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:handle-mirror-horizontal">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:handle-switched">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<attribute name="draw:handle-position">
+				<ref name="string"/>
+			</attribute>
+			<optional>
+				<attribute name="draw:handle-range-x-minimum">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:handle-range-x-maximum">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:handle-range-y-minimum">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:handle-range-y-maximum">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:handle-polar">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:handle-radius-range-minimum">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:handle-radius-range-maximum">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="presentation-shape-attlist">
+		<interleave>
+			<optional>
+				<attribute name="presentation:class">
+					<ref name="presentation-classes"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="presentation:placeholder">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="presentation:user-transformed">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="presentation-classes">
+		<choice>
+			<value>title</value>
+			<value>outline</value>
+			<value>subtitle</value>
+			<value>text</value>
+			<value>graphic</value>
+			<value>object</value>
+			<value>chart</value>
+			<value>table</value>
+			<value>orgchart</value>
+			<value>page</value>
+			<value>notes</value>
+			<value>handout</value>
+			<value>header</value>
+			<value>footer</value>
+			<value>date-time</value>
+			<value>page-number</value>
+		</choice>
+	</define>
+	<define name="presentation-animations">
+		<element name="presentation:animations">
+			<zeroOrMore>
+				<choice>
+					<ref name="presentation-animation-elements"/>
+					<ref name="presentation-animation-group"/>
+				</choice>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="presentation-animation-elements">
+		<choice>
+			<ref name="presentation-show-shape"/>
+			<ref name="presentation-show-text"/>
+			<ref name="presentation-hide-shape"/>
+			<ref name="presentation-hide-text"/>
+			<ref name="presentation-dim"/>
+			<ref name="presentation-play"/>
+		</choice>
+	</define>
+	<define name="presentation-sound">
+		<element name="presentation:sound">
+			<ref name="presentation-sound-attlist"/>
+			<attribute name="xlink:type">
+				<value>simple</value>
+			</attribute>
+			<attribute name="xlink:href">
+				<ref name="anyIRI"/>
+			</attribute>
+			<optional>
+				<attribute name="xlink:actuate">
+					<value>onRequest</value>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="xlink:show">
+					<choice>
+						<value>new</value>
+						<value>replace</value>
+					</choice>
+				</attribute>
+			</optional>
+			<empty/>
+		</element>
+	</define>
+	<define name="presentation-sound-attlist">
+		<interleave>
+			<optional>
+				<attribute name="presentation:play-full">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<ref name="xml-id"/>
+			</optional>
+		</interleave>
+	</define>
+	<define name="presentation-show-shape">
+		<element name="presentation:show-shape">
+			<ref name="common-presentation-effect-attlist"/>
+			<optional>
+				<ref name="presentation-sound"/>
+			</optional>
+		</element>
+	</define>
+	<define name="common-presentation-effect-attlist">
+		<interleave>
+			<attribute name="draw:shape-id">
+				<ref name="IDREF"/>
+			</attribute>
+			<optional>
+				<attribute name="presentation:effect">
+					<ref name="presentationEffects"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="presentation:direction">
+					<ref name="presentationEffectDirections"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="presentation:speed">
+					<ref name="presentationSpeeds"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="presentation:delay">
+					<ref name="duration"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="presentation:start-scale">
+					<ref name="percent"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="presentation:path-id">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="presentationEffects">
+		<choice>
+			<value>none</value>
+			<value>fade</value>
+			<value>move</value>
+			<value>stripes</value>
+			<value>open</value>
+			<value>close</value>
+			<value>dissolve</value>
+			<value>wavyline</value>
+			<value>random</value>
+			<value>lines</value>
+			<value>laser</value>
+			<value>appear</value>
+			<value>hide</value>
+			<value>move-short</value>
+			<value>checkerboard</value>
+			<value>rotate</value>
+			<value>stretch</value>
+		</choice>
+	</define>
+	<define name="presentationEffectDirections">
+		<choice>
+			<value>none</value>
+			<value>from-left</value>
+			<value>from-top</value>
+			<value>from-right</value>
+			<value>from-bottom</value>
+			<value>from-center</value>
+			<value>from-upper-left</value>
+			<value>from-upper-right</value>
+			<value>from-lower-left</value>
+			<value>from-lower-right</value>
+			<value>to-left</value>
+			<value>to-top</value>
+			<value>to-right</value>
+			<value>to-bottom</value>
+			<value>to-upper-left</value>
+			<value>to-upper-right</value>
+			<value>to-lower-right</value>
+			<value>to-lower-left</value>
+			<value>path</value>
+			<value>spiral-inward-left</value>
+			<value>spiral-inward-right</value>
+			<value>spiral-outward-left</value>
+			<value>spiral-outward-right</value>
+			<value>vertical</value>
+			<value>horizontal</value>
+			<value>to-center</value>
+			<value>clockwise</value>
+			<value>counter-clockwise</value>
+		</choice>
+	</define>
+	<define name="presentationSpeeds">
+		<choice>
+			<value>slow</value>
+			<value>medium</value>
+			<value>fast</value>
+		</choice>
+	</define>
+	<define name="presentation-show-text">
+		<element name="presentation:show-text">
+			<ref name="common-presentation-effect-attlist"/>
+			<optional>
+				<ref name="presentation-sound"/>
+			</optional>
+		</element>
+	</define>
+	<define name="presentation-hide-shape">
+		<element name="presentation:hide-shape">
+			<ref name="common-presentation-effect-attlist"/>
+			<optional>
+				<ref name="presentation-sound"/>
+			</optional>
+		</element>
+	</define>
+	<define name="presentation-hide-text">
+		<element name="presentation:hide-text">
+			<ref name="common-presentation-effect-attlist"/>
+			<optional>
+				<ref name="presentation-sound"/>
+			</optional>
+		</element>
+	</define>
+	<define name="presentation-dim">
+		<element name="presentation:dim">
+			<ref name="presentation-dim-attlist"/>
+			<optional>
+				<ref name="presentation-sound"/>
+			</optional>
+		</element>
+	</define>
+	<define name="presentation-dim-attlist">
+		<interleave>
+			<attribute name="draw:shape-id">
+				<ref name="IDREF"/>
+			</attribute>
+			<attribute name="draw:color">
+				<ref name="color"/>
+			</attribute>
+		</interleave>
+	</define>
+	<define name="presentation-play">
+		<element name="presentation:play">
+			<ref name="presentation-play-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="presentation-play-attlist">
+		<attribute name="draw:shape-id">
+			<ref name="IDREF"/>
+		</attribute>
+		<optional>
+			<attribute name="presentation:speed">
+				<ref name="presentationSpeeds"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="presentation-animation-group">
+		<element name="presentation:animation-group">
+			<zeroOrMore>
+				<ref name="presentation-animation-elements"/>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="common-anim-attlist">
+		<interleave>
+			<optional>
+				<attribute name="presentation:node-type">
+					<choice>
+						<value>default</value>
+						<value>on-click</value>
+						<value>with-previous</value>
+						<value>after-previous</value>
+						<value>timing-root</value>
+						<value>main-sequence</value>
+						<value>interactive-sequence</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="presentation:preset-id">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="presentation:preset-sub-type">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="presentation:preset-class">
+					<choice>
+						<value>custom</value>
+						<value>entrance</value>
+						<value>exit</value>
+						<value>emphasis</value>
+						<value>motion-path</value>
+						<value>ole-action</value>
+						<value>media-call</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="presentation:master-element">
+					<ref name="IDREF"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="presentation:group-id">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<group>
+					<ref name="xml-id"/>
+					<optional>
+						<attribute name="anim:id">
+							<ref name="NCName"/>
+						</attribute>
+					</optional>
+				</group>
+			</optional>
+		</interleave>
+	</define>
+	<define name="presentation-event-listener">
+		<element name="presentation:event-listener">
+			<ref name="presentation-event-listener-attlist"/>
+			<optional>
+				<ref name="presentation-sound"/>
+			</optional>
+		</element>
+	</define>
+	<define name="presentation-event-listener-attlist">
+		<interleave>
+			<attribute name="script:event-name">
+				<ref name="string"/>
+			</attribute>
+			<attribute name="presentation:action">
+				<choice>
+					<value>none</value>
+					<value>previous-page</value>
+					<value>next-page</value>
+					<value>first-page</value>
+					<value>last-page</value>
+					<value>hide</value>
+					<value>stop</value>
+					<value>execute</value>
+					<value>show</value>
+					<value>verb</value>
+					<value>fade-out</value>
+					<value>sound</value>
+					<value>last-visited-page</value>
+				</choice>
+			</attribute>
+			<optional>
+				<attribute name="presentation:effect">
+					<ref name="presentationEffects"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="presentation:direction">
+					<ref name="presentationEffectDirections"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="presentation:speed">
+					<ref name="presentationSpeeds"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="presentation:start-scale">
+					<ref name="percent"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="xlink:type">
+					<value>simple</value>
+				</attribute>
+				<attribute name="xlink:href">
+					<ref name="anyIRI"/>
+				</attribute>
+				<optional>
+					<attribute name="xlink:show">
+						<value>embed</value>
+					</attribute>
+				</optional>
+				<optional>
+					<attribute name="xlink:actuate">
+						<value>onRequest</value>
+					</attribute>
+				</optional>
+			</optional>
+			<optional>
+				<attribute name="presentation:verb">
+					<ref name="nonNegativeInteger"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="presentation-decls">
+		<zeroOrMore>
+			<ref name="presentation-decl"/>
+		</zeroOrMore>
+	</define>
+	<define name="presentation-decl">
+		<choice>
+			<element name="presentation:header-decl">
+				<ref name="presentation-header-decl-attlist"/>
+				<text/>
+			</element>
+			<element name="presentation:footer-decl">
+				<ref name="presentation-footer-decl-attlist"/>
+				<text/>
+			</element>
+			<element name="presentation:date-time-decl">
+				<ref name="presentation-date-time-decl-attlist"/>
+				<text/>
+			</element>
+		</choice>
+	</define>
+	<define name="presentation-header-decl-attlist">
+		<attribute name="presentation:name">
+			<ref name="string"/>
+		</attribute>
+	</define>
+	<define name="presentation-footer-decl-attlist">
+		<attribute name="presentation:name">
+			<ref name="string"/>
+		</attribute>
+	</define>
+	<define name="presentation-date-time-decl-attlist">
+		<interleave>
+			<attribute name="presentation:name">
+				<ref name="string"/>
+			</attribute>
+			<attribute name="presentation:source">
+				<choice>
+					<value>fixed</value>
+					<value>current-date</value>
+				</choice>
+			</attribute>
+			<optional>
+				<attribute name="style:data-style-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="presentation-settings">
+		<optional>
+			<element name="presentation:settings">
+				<ref name="presentation-settings-attlist"/>
+				<zeroOrMore>
+					<ref name="presentation-show"/>
+				</zeroOrMore>
+			</element>
+		</optional>
+	</define>
+	<define name="presentation-settings-attlist">
+		<interleave>
+			<optional>
+				<attribute name="presentation:start-page">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="presentation:show">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="presentation:full-screen">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="presentation:endless">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="presentation:pause">
+					<ref name="duration"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="presentation:show-logo">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="presentation:force-manual">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="presentation:mouse-visible">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="presentation:mouse-as-pen">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="presentation:start-with-navigator">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="presentation:animations">
+					<choice>
+						<value>enabled</value>
+						<value>disabled</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="presentation:transition-on-click">
+					<choice>
+						<value>enabled</value>
+						<value>disabled</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="presentation:stay-on-top">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="presentation:show-end-of-presentation-slide">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="presentation-show">
+		<element name="presentation:show">
+			<ref name="presentation-show-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="presentation-show-attlist">
+		<interleave>
+			<attribute name="presentation:name">
+				<ref name="string"/>
+			</attribute>
+			<attribute name="presentation:pages">
+				<ref name="string"/>
+			</attribute>
+		</interleave>
+	</define>
+	<define name="chart-chart">
+		<element name="chart:chart">
+			<ref name="chart-chart-attlist"/>
+			<optional>
+				<ref name="chart-title"/>
+			</optional>
+			<optional>
+				<ref name="chart-subtitle"/>
+			</optional>
+			<optional>
+				<ref name="chart-footer"/>
+			</optional>
+			<optional>
+				<ref name="chart-legend"/>
+			</optional>
+			<ref name="chart-plot-area"/>
+			<optional>
+				<ref name="table-table"/>
+			</optional>
+		</element>
+	</define>
+	<define name="chart-chart-attlist">
+		<interleave>
+			<attribute name="chart:class">
+				<ref name="namespacedToken"/>
+			</attribute>
+			<ref name="common-draw-size-attlist"/>
+			<optional>
+				<attribute name="chart:column-mapping">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:row-mapping">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:style-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+			<optional>
+				<group>
+					<attribute name="xlink:type">
+						<value>simple</value>
+					</attribute>
+					<attribute name="xlink:href">
+						<ref name="anyIRI"/>
+					</attribute>
+				</group>
+			</optional>
+			<optional>
+				<ref name="xml-id"/>
+			</optional>
+		</interleave>
+	</define>
+	<define name="chart-title">
+		<element name="chart:title">
+			<ref name="chart-title-attlist"/>
+			<optional>
+				<ref name="text-p"/>
+			</optional>
+		</element>
+	</define>
+	<define name="chart-title-attlist">
+		<interleave>
+			<optional>
+				<attribute name="table:cell-range">
+					<ref name="cellRangeAddressList"/>
+				</attribute>
+			</optional>
+			<ref name="common-draw-position-attlist"/>
+			<optional>
+				<attribute name="chart:style-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="chart-subtitle">
+		<element name="chart:subtitle">
+			<ref name="chart-title-attlist"/>
+			<optional>
+				<ref name="text-p"/>
+			</optional>
+		</element>
+	</define>
+	<define name="chart-footer">
+		<element name="chart:footer">
+			<ref name="chart-title-attlist"/>
+			<optional>
+				<ref name="text-p"/>
+			</optional>
+		</element>
+	</define>
+	<define name="chart-legend">
+		<element name="chart:legend">
+			<ref name="chart-legend-attlist"/>
+			<optional>
+				<ref name="text-p"/>
+			</optional>
+		</element>
+	</define>
+	<define name="chart-legend-attlist">
+		<interleave>
+			<choice>
+				<group>
+					<attribute name="chart:legend-position">
+						<choice>
+							<value>start</value>
+							<value>end</value>
+							<value>top</value>
+							<value>bottom</value>
+						</choice>
+					</attribute>
+					<optional>
+						<attribute name="chart:legend-align">
+							<choice>
+								<value>start</value>
+								<value>center</value>
+								<value>end</value>
+							</choice>
+						</attribute>
+					</optional>
+				</group>
+				<attribute name="chart:legend-position">
+					<choice>
+						<value>top-start</value>
+						<value>bottom-start</value>
+						<value>top-end</value>
+						<value>bottom-end</value>
+					</choice>
+				</attribute>
+				<empty/>
+			</choice>
+			<ref name="common-draw-position-attlist"/>
+			<choice>
+				<attribute name="style:legend-expansion">
+					<choice>
+						<value>wide</value>
+						<value>high</value>
+						<value>balanced</value>
+					</choice>
+				</attribute>
+				<group>
+					<attribute name="style:legend-expansion">
+						<value>custom</value>
+					</attribute>
+					<attribute name="style:legend-expansion-aspect-ratio">
+						<ref name="double"/>
+					</attribute>
+				</group>
+				<empty/>
+			</choice>
+			<optional>
+				<attribute name="chart:style-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="chart-plot-area">
+		<element name="chart:plot-area">
+			<ref name="chart-plot-area-attlist"/>
+			<zeroOrMore>
+				<ref name="dr3d-light"/>
+			</zeroOrMore>
+			<zeroOrMore>
+				<ref name="chart-axis"/>
+			</zeroOrMore>
+			<zeroOrMore>
+				<ref name="chart-series"/>
+			</zeroOrMore>
+			<optional>
+				<ref name="chart-stock-gain-marker"/>
+			</optional>
+			<optional>
+				<ref name="chart-stock-loss-marker"/>
+			</optional>
+			<optional>
+				<ref name="chart-stock-range-line"/>
+			</optional>
+			<optional>
+				<ref name="chart-wall"/>
+			</optional>
+			<optional>
+				<ref name="chart-floor"/>
+			</optional>
+		</element>
+	</define>
+	<define name="chart-plot-area-attlist">
+		<interleave>
+			<ref name="common-draw-position-attlist"/>
+			<ref name="common-draw-size-attlist"/>
+			<optional>
+				<attribute name="chart:style-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:cell-range-address">
+					<ref name="cellRangeAddressList"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:data-source-has-labels">
+					<choice>
+						<value>none</value>
+						<value>row</value>
+						<value>column</value>
+						<value>both</value>
+					</choice>
+				</attribute>
+			</optional>
+			<ref name="dr3d-scene-attlist"/>
+			<ref name="common-dr3d-transform-attlist"/>
+			<optional>
+				<ref name="xml-id"/>
+			</optional>
+		</interleave>
+	</define>
+	<define name="chart-wall">
+		<element name="chart:wall">
+			<ref name="chart-wall-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="chart-wall-attlist">
+		<interleave>
+			<optional>
+				<attribute name="svg:width">
+					<ref name="length"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:style-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="chart-floor">
+		<element name="chart:floor">
+			<ref name="chart-floor-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="chart-floor-attlist">
+		<interleave>
+			<optional>
+				<attribute name="svg:width">
+					<ref name="length"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:style-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="chart-axis">
+		<element name="chart:axis">
+			<ref name="chart-axis-attlist"/>
+			<optional>
+				<ref name="chart-title"/>
+			</optional>
+			<optional>
+				<ref name="chart-categories"/>
+			</optional>
+			<zeroOrMore>
+				<ref name="chart-grid"/>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="chart-axis-attlist">
+		<interleave>
+			<attribute name="chart:dimension">
+				<ref name="chart-dimension"/>
+			</attribute>
+			<optional>
+				<attribute name="chart:name">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:style-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="chart-dimension">
+		<choice>
+			<value>x</value>
+			<value>y</value>
+			<value>z</value>
+		</choice>
+	</define>
+	<define name="chart-categories">
+		<element name="chart:categories">
+			<optional>
+				<attribute name="table:cell-range-address">
+					<ref name="cellRangeAddressList"/>
+				</attribute>
+			</optional>
+		</element>
+	</define>
+	<define name="chart-grid">
+		<element name="chart:grid">
+			<ref name="chart-grid-attlist"/>
+		</element>
+	</define>
+	<define name="chart-grid-attlist">
+		<interleave>
+			<optional>
+				<attribute name="chart:class">
+					<choice>
+						<value>major</value>
+						<value>minor</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:style-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="chart-series">
+		<element name="chart:series">
+			<ref name="chart-series-attlist"/>
+			<zeroOrMore>
+				<ref name="chart-domain"/>
+			</zeroOrMore>
+			<optional>
+				<ref name="chart-mean-value"/>
+			</optional>
+			<zeroOrMore>
+				<ref name="chart-regression-curve"/>
+			</zeroOrMore>
+			<zeroOrMore>
+				<ref name="chart-error-indicator"/>
+			</zeroOrMore>
+			<zeroOrMore>
+				<ref name="chart-data-point"/>
+			</zeroOrMore>
+			<optional>
+				<ref name="chart-data-label"/>
+			</optional>
+		</element>
+	</define>
+	<define name="chart-series-attlist">
+		<interleave>
+			<optional>
+				<attribute name="chart:values-cell-range-address">
+					<ref name="cellRangeAddressList"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:label-cell-address">
+					<ref name="cellRangeAddressList"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:class">
+					<ref name="namespacedToken"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:attached-axis">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:style-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+			<optional>
+				<ref name="xml-id"/>
+			</optional>
+		</interleave>
+	</define>
+	<define name="chart-domain">
+		<element name="chart:domain">
+			<optional>
+				<attribute name="table:cell-range-address">
+					<ref name="cellRangeAddressList"/>
+				</attribute>
+			</optional>
+		</element>
+	</define>
+	<define name="chart-data-point">
+		<element name="chart:data-point">
+			<ref name="chart-data-point-attlist"/>
+			<optional>
+				<ref name="chart-data-label"/>
+			</optional>
+		</element>
+	</define>
+	<define name="chart-data-point-attlist">
+		<interleave>
+			<optional>
+				<attribute name="chart:repeated">
+					<ref name="positiveInteger"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:style-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+			<optional>
+				<ref name="xml-id"/>
+			</optional>
+		</interleave>
+	</define>
+	<define name="chart-data-label">
+		<element name="chart:data-label">
+			<ref name="chart-data-label-attlist"/>
+			<optional>
+				<ref name="text-p"/>
+			</optional>
+		</element>
+	</define>
+	<define name="chart-data-label-attlist">
+		<interleave>
+			<ref name="common-draw-position-attlist"/>
+			<optional>
+				<attribute name="chart:style-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="chart-mean-value">
+		<element name="chart:mean-value">
+			<ref name="chart-mean-value-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="chart-mean-value-attlist">
+		<optional>
+			<attribute name="chart:style-name">
+				<ref name="styleNameRef"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="chart-error-indicator">
+		<element name="chart:error-indicator">
+			<ref name="chart-error-indicator-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="chart-error-indicator-attlist">
+		<interleave>
+			<optional>
+				<attribute name="chart:style-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+			<attribute name="chart:dimension">
+				<ref name="chart-dimension"/>
+			</attribute>
+		</interleave>
+	</define>
+	<define name="chart-regression-curve">
+		<element name="chart:regression-curve">
+			<ref name="chart-regression-curve-attlist"/>
+			<optional>
+				<ref name="chart-equation"/>
+			</optional>
+		</element>
+	</define>
+	<define name="chart-regression-curve-attlist">
+		<optional>
+			<attribute name="chart:style-name">
+				<ref name="styleNameRef"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="chart-equation">
+		<element name="chart:equation">
+			<ref name="chart-equation-attlist"/>
+			<optional>
+				<ref name="text-p"/>
+			</optional>
+		</element>
+	</define>
+	<define name="chart-equation-attlist">
+		<interleave>
+			<optional>
+				<attribute name="chart:automatic-content">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:display-r-square">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:display-equation">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<ref name="common-draw-position-attlist"/>
+			<optional>
+				<attribute name="chart:style-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="chart-stock-gain-marker">
+		<element name="chart:stock-gain-marker">
+			<ref name="common-stock-marker-attlist"/>
+		</element>
+	</define>
+	<define name="chart-stock-loss-marker">
+		<element name="chart:stock-loss-marker">
+			<ref name="common-stock-marker-attlist"/>
+		</element>
+	</define>
+	<define name="chart-stock-range-line">
+		<element name="chart:stock-range-line">
+			<ref name="common-stock-marker-attlist"/>
+		</element>
+	</define>
+	<define name="common-stock-marker-attlist">
+		<optional>
+			<attribute name="chart:style-name">
+				<ref name="styleNameRef"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="office-database">
+		<element name="office:database">
+			<ref name="db-data-source"/>
+			<optional>
+				<ref name="db-forms"/>
+			</optional>
+			<optional>
+				<ref name="db-reports"/>
+			</optional>
+			<optional>
+				<ref name="db-queries"/>
+			</optional>
+			<optional>
+				<ref name="db-table-presentations"/>
+			</optional>
+			<optional>
+				<ref name="db-schema-definition"/>
+			</optional>
+		</element>
+	</define>
+	<define name="db-data-source">
+		<element name="db:data-source">
+			<ref name="db-data-source-attlist"/>
+			<ref name="db-connection-data"/>
+			<optional>
+				<ref name="db-driver-settings"/>
+			</optional>
+			<optional>
+				<ref name="db-application-connection-settings"/>
+			</optional>
+		</element>
+	</define>
+	<define name="db-data-source-attlist">
+		<empty/>
+	</define>
+	<define name="db-connection-data">
+		<element name="db:connection-data">
+			<ref name="db-connection-data-attlist"/>
+			<choice>
+				<ref name="db-database-description"/>
+				<ref name="db-connection-resource"/>
+			</choice>
+			<optional>
+				<ref name="db-login"/>
+			</optional>
+		</element>
+	</define>
+	<define name="db-connection-data-attlist">
+		<empty/>
+	</define>
+	<define name="db-database-description">
+		<element name="db:database-description">
+			<ref name="db-database-description-attlist"/>
+			<choice>
+				<ref name="db-file-based-database"/>
+				<ref name="db-server-database"/>
+			</choice>
+		</element>
+	</define>
+	<define name="db-database-description-attlist">
+		<empty/>
+	</define>
+	<define name="db-file-based-database">
+		<element name="db:file-based-database">
+			<ref name="db-file-based-database-attlist"/>
+		</element>
+	</define>
+	<define name="db-file-based-database-attlist">
+		<interleave>
+			<attribute name="xlink:type">
+				<value>simple</value>
+			</attribute>
+			<attribute name="xlink:href">
+				<ref name="anyIRI"/>
+			</attribute>
+			<attribute name="db:media-type">
+				<ref name="string"/>
+			</attribute>
+			<optional>
+				<attribute name="db:extension">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="db-server-database">
+		<element name="db:server-database">
+			<ref name="db-server-database-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="db-server-database-attlist">
+		<interleave>
+			<attribute name="db:type">
+				<ref name="namespacedToken"/>
+			</attribute>
+			<choice>
+				<ref name="db-host-and-port"/>
+				<ref name="db-local-socket-name"/>
+			</choice>
+			<optional>
+				<attribute name="db:database-name">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="db-host-and-port">
+		<attribute name="db:hostname">
+			<ref name="string"/>
+		</attribute>
+		<optional>
+			<attribute name="db:port">
+				<ref name="positiveInteger"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="db-local-socket-name">
+		<optional>
+			<attribute name="db:local-socket">
+				<ref name="string"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="db-connection-resource">
+		<element name="db:connection-resource">
+			<ref name="db-connection-resource-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="db-connection-resource-attlist">
+		<attribute name="xlink:type">
+			<value>simple</value>
+		</attribute>
+		<attribute name="xlink:href">
+			<ref name="anyIRI"/>
+		</attribute>
+		<optional>
+			<attribute name="xlink:show">
+				<value>none</value>
+			</attribute>
+		</optional>
+		<optional>
+			<attribute name="xlink:actuate">
+				<value>onRequest</value>
+			</attribute>
+		</optional>
+	</define>
+	<define name="db-login">
+		<element name="db:login">
+			<ref name="db-login-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="db-login-attlist">
+		<interleave>
+			<optional>
+				<choice>
+					<attribute name="db:user-name">
+						<ref name="string"/>
+					</attribute>
+					<attribute name="db:use-system-user">
+						<ref name="boolean"/>
+					</attribute>
+				</choice>
+			</optional>
+			<optional>
+				<attribute name="db:is-password-required">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="db:login-timeout">
+					<ref name="positiveInteger"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="db-driver-settings">
+		<element name="db:driver-settings">
+			<ref name="db-driver-settings-attlist"/>
+			<optional>
+				<ref name="db-auto-increment"/>
+			</optional>
+			<optional>
+				<ref name="db-delimiter"/>
+			</optional>
+			<optional>
+				<ref name="db-character-set"/>
+			</optional>
+			<optional>
+				<ref name="db-table-settings"/>
+			</optional>
+		</element>
+	</define>
+	<define name="db-driver-settings-attlist">
+		<interleave>
+			<ref name="db-show-deleted"/>
+			<optional>
+				<attribute name="db:system-driver-settings">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="db:base-dn">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<ref name="db-is-first-row-header-line"/>
+			<optional>
+				<attribute name="db:parameter-name-substitution">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="db-show-deleted">
+		<optional>
+			<attribute name="db:show-deleted">
+				<ref name="boolean"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="db-is-first-row-header-line">
+		<optional>
+			<attribute name="db:is-first-row-header-line">
+				<ref name="boolean"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="db-auto-increment">
+		<element name="db:auto-increment">
+			<ref name="db-auto-increment-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="db-auto-increment-attlist">
+		<interleave>
+			<optional>
+				<attribute name="db:additional-column-statement">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="db:row-retrieving-statement">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="db-delimiter">
+		<element name="db:delimiter">
+			<ref name="db-delimiter-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="db-delimiter-attlist">
+		<interleave>
+			<optional>
+				<attribute name="db:field">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="db:string">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="db:decimal">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="db:thousand">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="db-character-set">
+		<element name="db:character-set">
+			<ref name="db-character-set-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="db-character-set-attlist">
+		<optional>
+			<attribute name="db:encoding">
+				<ref name="textEncoding"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="db-table-settings">
+		<element name="db:table-settings">
+			<zeroOrMore>
+				<ref name="db-table-setting"/>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="db-table-setting">
+		<element name="db:table-setting">
+			<ref name="db-table-setting-attlist"/>
+			<optional>
+				<ref name="db-delimiter"/>
+			</optional>
+			<optional>
+				<ref name="db-character-set"/>
+			</optional>
+			<empty/>
+		</element>
+	</define>
+	<define name="db-table-setting-attlist">
+		<ref name="db-is-first-row-header-line"/>
+		<ref name="db-show-deleted"/>
+	</define>
+	<define name="db-application-connection-settings">
+		<element name="db:application-connection-settings">
+			<ref name="db-application-connection-settings-attlist"/>
+			<optional>
+				<ref name="db-table-filter"/>
+			</optional>
+			<optional>
+				<ref name="db-table-type-filter"/>
+			</optional>
+			<optional>
+				<ref name="db-data-source-settings"/>
+			</optional>
+		</element>
+	</define>
+	<define name="db-application-connection-settings-attlist">
+		<interleave>
+			<optional>
+				<attribute name="db:is-table-name-length-limited">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="db:enable-sql92-check">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="db:append-table-alias-name">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="db:ignore-driver-privileges">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="db:boolean-comparison-mode">
+					<choice>
+						<value>equal-integer</value>
+						<value>is-boolean</value>
+						<value>equal-boolean</value>
+						<value>equal-use-only-zero</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="db:use-catalog">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="db:max-row-count">
+					<ref name="integer"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="db:suppress-version-columns">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="db-table-filter">
+		<element name="db:table-filter">
+			<ref name="db-table-filter-attlist"/>
+			<optional>
+				<ref name="db-table-include-filter"/>
+			</optional>
+			<optional>
+				<ref name="db-table-exclude-filter"/>
+			</optional>
+		</element>
+	</define>
+	<define name="db-table-filter-attlist">
+		<empty/>
+	</define>
+	<define name="db-table-include-filter">
+		<element name="db:table-include-filter">
+			<ref name="db-table-include-filter-attlist"/>
+			<oneOrMore>
+				<ref name="db-table-filter-pattern"/>
+			</oneOrMore>
+		</element>
+	</define>
+	<define name="db-table-include-filter-attlist">
+		<empty/>
+	</define>
+	<define name="db-table-exclude-filter">
+		<element name="db:table-exclude-filter">
+			<ref name="db-table-exclude-filter-attlist"/>
+			<oneOrMore>
+				<ref name="db-table-filter-pattern"/>
+			</oneOrMore>
+		</element>
+	</define>
+	<define name="db-table-exclude-filter-attlist">
+		<empty/>
+	</define>
+	<define name="db-table-filter-pattern">
+		<element name="db:table-filter-pattern">
+			<ref name="db-table-filter-pattern-attlist"/>
+			<ref name="string"/>
+		</element>
+	</define>
+	<define name="db-table-filter-pattern-attlist">
+		<empty/>
+	</define>
+	<define name="db-table-type-filter">
+		<element name="db:table-type-filter">
+			<ref name="db-table-type-filter-attlist"/>
+			<zeroOrMore>
+				<ref name="db-table-type"/>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="db-table-type-filter-attlist">
+		<empty/>
+	</define>
+	<define name="db-table-type">
+		<element name="db:table-type">
+			<ref name="db-table-type-attlist"/>
+			<ref name="string"/>
+		</element>
+	</define>
+	<define name="db-table-type-attlist">
+		<empty/>
+	</define>
+	<define name="db-data-source-settings">
+		<element name="db:data-source-settings">
+			<ref name="db-data-source-settings-attlist"/>
+			<oneOrMore>
+				<ref name="db-data-source-setting"/>
+			</oneOrMore>
+		</element>
+	</define>
+	<define name="db-data-source-settings-attlist">
+		<empty/>
+	</define>
+	<define name="db-data-source-setting">
+		<element name="db:data-source-setting">
+			<ref name="db-data-source-setting-attlist"/>
+			<oneOrMore>
+				<ref name="db-data-source-setting-value"/>
+			</oneOrMore>
+		</element>
+	</define>
+	<define name="db-data-source-setting-attlist">
+		<interleave>
+			<optional>
+				<attribute name="db:data-source-setting-is-list">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<attribute name="db:data-source-setting-name">
+				<ref name="string"/>
+			</attribute>
+			<attribute name="db:data-source-setting-type">
+				<ref name="db-data-source-setting-types"/>
+			</attribute>
+		</interleave>
+	</define>
+	<define name="db-data-source-setting-types">
+		<choice>
+			<value>boolean</value>
+			<value>short</value>
+			<value>int</value>
+			<value>long</value>
+			<value>double</value>
+			<value>string</value>
+		</choice>
+	</define>
+	<define name="db-data-source-setting-value">
+		<element name="db:data-source-setting-value">
+			<ref name="db-data-source-setting-value-attlist"/>
+			<ref name="string"/>
+		</element>
+	</define>
+	<define name="db-data-source-setting-value-attlist">
+		<empty/>
+	</define>
+	<define name="db-forms">
+		<element name="db:forms">
+			<ref name="db-forms-attlist"/>
+			<zeroOrMore>
+				<choice>
+					<ref name="db-component"/>
+					<ref name="db-component-collection"/>
+				</choice>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="db-forms-attlist">
+		<empty/>
+	</define>
+	<define name="db-reports">
+		<element name="db:reports">
+			<ref name="db-reports-attlist"/>
+			<zeroOrMore>
+				<choice>
+					<ref name="db-component"/>
+					<ref name="db-component-collection"/>
+				</choice>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="db-reports-attlist">
+		<empty/>
+	</define>
+	<define name="db-component-collection">
+		<element name="db:component-collection">
+			<ref name="db-component-collection-attlist"/>
+			<ref name="common-db-object-name"/>
+			<ref name="common-db-object-title"/>
+			<ref name="common-db-object-description"/>
+			<zeroOrMore>
+				<choice>
+					<ref name="db-component"/>
+					<ref name="db-component-collection"/>
+				</choice>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="db-component-collection-attlist">
+		<empty/>
+	</define>
+	<define name="db-component">
+		<element name="db:component">
+			<ref name="db-component-attlist"/>
+			<ref name="common-db-object-name"/>
+			<ref name="common-db-object-title"/>
+			<ref name="common-db-object-description"/>
+			<optional>
+				<choice>
+					<ref name="office-document"/>
+					<ref name="math-math"/>
+				</choice>
+			</optional>
+		</element>
+	</define>
+	<define name="db-component-attlist">
+		<interleave>
+			<optional>
+				<attribute name="xlink:type">
+					<value>simple</value>
+				</attribute>
+				<attribute name="xlink:href">
+					<ref name="anyIRI"/>
+				</attribute>
+				<optional>
+					<attribute name="xlink:show">
+						<value>none</value>
+					</attribute>
+				</optional>
+				<optional>
+					<attribute name="xlink:actuate">
+						<value>onRequest</value>
+					</attribute>
+				</optional>
+			</optional>
+			<optional>
+				<attribute name="db:as-template">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="db-queries">
+		<element name="db:queries">
+			<ref name="db-queries-attlist"/>
+			<zeroOrMore>
+				<choice>
+					<ref name="db-query"/>
+					<ref name="db-query-collection"/>
+				</choice>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="db-queries-attlist">
+		<empty/>
+	</define>
+	<define name="db-query-collection">
+		<element name="db:query-collection">
+			<ref name="db-query-collection-attlist"/>
+			<ref name="common-db-object-name"/>
+			<ref name="common-db-object-title"/>
+			<ref name="common-db-object-description"/>
+			<zeroOrMore>
+				<choice>
+					<ref name="db-query"/>
+					<ref name="db-query-collection"/>
+				</choice>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="db-query-collection-attlist">
+		<empty/>
+	</define>
+	<define name="db-query">
+		<element name="db:query">
+			<ref name="db-query-attlist"/>
+			<ref name="common-db-object-name"/>
+			<ref name="common-db-object-title"/>
+			<ref name="common-db-object-description"/>
+			<ref name="common-db-table-style-name"/>
+			<optional>
+				<ref name="db-order-statement"/>
+			</optional>
+			<optional>
+				<ref name="db-filter-statement"/>
+			</optional>
+			<optional>
+				<ref name="db-columns"/>
+			</optional>
+			<optional>
+				<ref name="db-update-table"/>
+			</optional>
+		</element>
+	</define>
+	<define name="db-query-attlist">
+		<interleave>
+			<attribute name="db:command">
+				<ref name="string"/>
+			</attribute>
+			<optional>
+				<attribute name="db:escape-processing">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="db-order-statement">
+		<element name="db:order-statement">
+			<ref name="db-command"/>
+			<ref name="db-apply-command"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="db-filter-statement">
+		<element name="db:filter-statement">
+			<ref name="db-command"/>
+			<ref name="db-apply-command"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="db-update-table">
+		<element name="db:update-table">
+			<ref name="common-db-table-name-attlist"/>
+		</element>
+	</define>
+	<define name="db-table-presentations">
+		<element name="db:table-representations">
+			<ref name="db-table-presentations-attlist"/>
+			<zeroOrMore>
+				<ref name="db-table-presentation"/>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="db-table-presentations-attlist">
+		<empty/>
+	</define>
+	<define name="db-table-presentation">
+		<element name="db:table-representation">
+			<ref name="db-table-presentation-attlist"/>
+			<ref name="common-db-table-name-attlist"/>
+			<ref name="common-db-object-title"/>
+			<ref name="common-db-object-description"/>
+			<ref name="common-db-table-style-name"/>
+			<optional>
+				<ref name="db-order-statement"/>
+			</optional>
+			<optional>
+				<ref name="db-filter-statement"/>
+			</optional>
+			<optional>
+				<ref name="db-columns"/>
+			</optional>
+		</element>
+	</define>
+	<define name="db-table-presentation-attlist">
+		<empty/>
+	</define>
+	<define name="db-columns">
+		<element name="db:columns">
+			<ref name="db-columns-attlist"/>
+			<oneOrMore>
+				<ref name="db-column"/>
+			</oneOrMore>
+		</element>
+	</define>
+	<define name="db-columns-attlist">
+		<empty/>
+	</define>
+	<define name="db-column">
+		<element name="db:column">
+			<ref name="db-column-attlist"/>
+			<ref name="common-db-object-name"/>
+			<ref name="common-db-object-title"/>
+			<ref name="common-db-object-description"/>
+			<ref name="common-db-default-value"/>
+		</element>
+	</define>
+	<define name="db-column-attlist">
+		<interleave>
+			<optional>
+				<attribute name="db:visible">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+	
+			<optional>
+				<attribute name="db:style-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="db:default-cell-style-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="db-command">
+		<attribute name="db:command">
+			<ref name="string"/>
+		</attribute>
+	</define>
+	<define name="db-apply-command">
+		<optional>
+			<attribute name="db:apply-command">
+				<ref name="boolean"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-db-table-name-attlist">
+		<interleave>
+			<attribute name="db:name">
+				<ref name="string"/>
+			</attribute>
+			<optional>
+				<attribute name="db:catalog-name">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="db:schema-name">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="common-db-object-name">
+		<attribute name="db:name">
+			<ref name="string"/>
+		</attribute>
+	</define>
+	<define name="common-db-object-title">
+		<optional>
+			<attribute name="db:title">
+				<ref name="string"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-db-object-description">
+		<optional>
+			<attribute name="db:description">
+				<ref name="string"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-db-table-style-name">
+		<interleave>
+			<optional>
+				<attribute name="db:style-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="db:default-row-style-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="common-db-default-value">
+		<optional>
+			<ref name="common-value-and-type-attlist"/>
+		</optional>
+	</define>
+	<define name="db-schema-definition">
+		<element name="db:schema-definition">
+			<ref name="db-schema-definition-attlist"/>
+			<ref name="db-table-definitions"/>
+		</element>
+	</define>
+	<define name="db-schema-definition-attlist">
+		<empty/>
+	</define>
+	<define name="db-table-definitions">
+		<element name="db:table-definitions">
+			<ref name="db-table-definitions-attlist"/>
+			<zeroOrMore>
+				<ref name="db-table-definition"/>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="db-table-definitions-attlist">
+		<empty/>
+	</define>
+	<define name="db-table-definition">
+		<element name="db:table-definition">
+			<ref name="common-db-table-name-attlist"/>
+			<ref name="db-table-definition-attlist"/>
+			<ref name="db-column-definitions"/>
+			<optional>
+				<ref name="db-keys"/>
+			</optional>
+			<optional>
+				<ref name="db-indices"/>
+			</optional>
+		</element>
+	</define>
+	<define name="db-table-definition-attlist">
+		<optional>
+			<attribute name="db:type">
+				<ref name="string"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="db-column-definitions">
+		<element name="db:column-definitions">
+			<ref name="db-column-definitions-attlist"/>
+			<oneOrMore>
+				<ref name="db-column-definition"/>
+			</oneOrMore>
+		</element>
+	</define>
+	<define name="db-column-definitions-attlist">
+		<empty/>
+	</define>
+	<define name="db-column-definition">
+		<element name="db:column-definition">
+			<ref name="db-column-definition-attlist"/>
+			<ref name="common-db-default-value"/>
+		</element>
+	</define>
+	<define name="db-column-definition-attlist">
+		<interleave>
+			<attribute name="db:name">
+				<ref name="string"/>
+			</attribute>
+	
+			<optional>
+				<attribute name="db:data-type">
+					<ref name="db-data-types"/>
+				</attribute>
+			</optional>
+	
+			<optional>
+				<attribute name="db:type-name">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+	
+			<optional>
+				<attribute name="db:precision">
+					<ref name="positiveInteger"/>
+				</attribute>
+			</optional>
+	
+			<optional>
+				<attribute name="db:scale">
+					<ref name="positiveInteger"/>
+				</attribute>
+			</optional>
+	
+			<optional>
+				<attribute name="db:is-nullable">
+					<choice>
+						<value>no-nulls</value>
+						<value>nullable</value>
+					</choice>
+				</attribute>
+			</optional>
+	
+			<optional>
+				<attribute name="db:is-empty-allowed">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+	
+			<optional>
+				<attribute name="db:is-autoincrement">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="db-data-types">
+		<choice>
+			<value>bit</value>
+			<value>boolean</value>
+			<value>tinyint</value>
+			<value>smallint</value>
+			<value>integer</value>
+			<value>bigint</value>
+			<value>float</value>
+			<value>real</value>
+			<value>double</value>
+			<value>numeric</value>
+			<value>decimal</value>
+			<value>char</value>
+			<value>varchar</value>
+			<value>longvarchar</value>
+			<value>date</value>
+			<value>time</value>
+			<value>timestmp</value>
+			<value>binary</value>
+			<value>varbinary</value>
+			<value>longvarbinary</value>
+			<value>sqlnull</value>
+			<value>other</value>
+			<value>object</value>
+			<value>distinct</value>
+			<value>struct</value>
+			<value>array</value>
+			<value>blob</value>
+			<value>clob</value>
+			<value>ref</value>
+		</choice>
+	</define>
+	<define name="db-keys">
+		<element name="db:keys">
+			<ref name="db-keys-attlist"/>
+			<oneOrMore>
+				<ref name="db-key"/>
+			</oneOrMore>
+		</element>
+	</define>
+	<define name="db-keys-attlist">
+		<empty/>
+	</define>
+	<define name="db-key">
+		<element name="db:key">
+			<ref name="db-key-attlist"/>
+			<oneOrMore>
+				<ref name="db-key-columns"/>
+			</oneOrMore>
+		</element>
+	</define>
+	<define name="db-key-attlist">
+		<interleave>
+			<optional>
+				<attribute name="db:name">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+	
+			<attribute name="db:type">
+				<choice>
+					<value>primary</value>
+					<value>unique</value>
+					<value>foreign</value>
+				</choice>
+			</attribute>
+	
+			<optional>
+				<attribute name="db:referenced-table-name">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+	
+			<optional>
+				<attribute name="db:update-rule">
+					<choice>
+						<value>cascade</value>
+						<value>restrict</value>
+						<value>set-null</value>
+						<value>no-action</value>
+						<value>set-default</value>
+					</choice>
+				</attribute>
+			</optional>
+	
+			<optional>
+				<attribute name="db:delete-rule">
+					<choice>
+						<value>cascade</value>
+						<value>restrict</value>
+						<value>set-null</value>
+						<value>no-action</value>
+						<value>set-default</value>
+					</choice>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="db-key-columns">
+		<element name="db:key-columns">
+			<ref name="db-key-columns-attlist"/>
+			<oneOrMore>
+				<ref name="db-key-column"/>
+			</oneOrMore>
+		</element>
+	</define>
+	<define name="db-key-columns-attlist">
+		<empty/>
+	</define>
+	<define name="db-key-column">
+		<element name="db:key-column">
+			<ref name="db-key-column-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="db-key-column-attlist">
+		<interleave>
+			<optional>
+				<attribute name="db:name">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+	
+			<optional>
+				<attribute name="db:related-column-name">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="db-indices">
+		<element name="db:indices">
+			<ref name="db-indices-attlist"/>
+			<oneOrMore>
+				<ref name="db-index"/>
+			</oneOrMore>
+		</element>
+	</define>
+	<define name="db-indices-attlist">
+		<empty/>
+	</define>
+	<define name="db-index">
+		<element name="db:index">
+			<ref name="db-index-attlist"/>
+			<oneOrMore>
+				<ref name="db-index-columns"/>
+			</oneOrMore>
+		</element>
+	</define>
+	<define name="db-index-attlist">
+		<interleave>
+			<attribute name="db:name">
+				<ref name="string"/>
+			</attribute>
+	
+			<optional>
+				<attribute name="db:catalog-name">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+	
+			<optional>
+				<attribute name="db:is-unique">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+	
+			<optional>
+				<attribute name="db:is-clustered">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="db-index-columns">
+		<element name="db:index-columns">
+			<oneOrMore>
+				<ref name="db-index-column"/>
+			</oneOrMore>
+		</element>
+	</define>
+	<define name="db-index-column">
+		<element name="db:index-column">
+			<ref name="db-index-column-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="db-index-column-attlist">
+		<interleave>
+			<attribute name="db:name">
+				<ref name="string"/>
+			</attribute>
+	
+			<optional>
+				<attribute name="db:is-ascending">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="office-forms">
+		<optional>
+			<element name="office:forms">
+				<ref name="office-forms-attlist"/>
+				<zeroOrMore>
+					<choice>
+						<ref name="form-form"/>
+						<ref name="xforms-model"/>
+					</choice>
+				</zeroOrMore>
+			</element>
+		</optional>
+	</define>
+	<define name="office-forms-attlist">
+		<interleave>
+			<optional>
+				<attribute name="form:automatic-focus">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="form:apply-design-mode">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="form-form">
+		<element name="form:form">
+			<ref name="common-form-control-attlist"/>
+			<ref name="form-form-attlist"/>
+			<optional>
+				<ref name="form-properties"/>
+			</optional>
+			<optional>
+				<ref name="office-event-listeners"/>
+			</optional>
+			<zeroOrMore>
+				<choice>
+					<ref name="controls"/>
+					<ref name="form-form"/>
+				</choice>
+			</zeroOrMore>
+			<optional>
+				<ref name="form-connection-resource"/>
+			</optional>
+		</element>
+	</define>
+	<define name="form-form-attlist">
+		<interleave>
+			<optional>
+				<attribute name="xlink:type">
+					<value>simple</value>
+				</attribute>
+				<attribute name="xlink:href">
+					<ref name="anyIRI"/>
+				</attribute>
+				<optional>
+					<attribute name="xlink:actuate">
+						<value>onRequest</value>
+					</attribute>
+				</optional>
+			</optional>
+			<optional>
+				<attribute name="office:target-frame">
+					<ref name="targetFrameName"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="form:method">
+					<choice>
+						<value>get</value>
+						<value>post</value>
+						<ref name="string"/>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="form:enctype">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="form:allow-deletes">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="form:allow-inserts">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="form:allow-updates">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="form:apply-filter">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="form:command-type">
+					<choice>
+						<value>table</value>
+						<value>query</value>
+						<value>command</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="form:command">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="form:datasource">
+					<choice>
+						<ref name="anyIRI"/>
+						<ref name="string"/>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="form:master-fields">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="form:detail-fields">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="form:escape-processing">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="form:filter">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="form:ignore-result">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="form:navigation-mode">
+					<ref name="navigation"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="form:order">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="form:tab-cycle">
+					<ref name="tab-cycles"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="navigation">
+		<choice>
+			<value>none</value>
+			<value>current</value>
+			<value>parent</value>
+		</choice>
+	</define>
+	<define name="tab-cycles">
+		<choice>
+			<value>records</value>
+			<value>current</value>
+			<value>page</value>
+		</choice>
+	</define>
+	<define name="form-connection-resource">
+		<element name="form:connection-resource">
+			<attribute name="xlink:href">
+				<ref name="anyIRI"/>
+			</attribute>
+			<empty/>
+		</element>
+	</define>
+	<define name="xforms-model">
+		<element name="xforms:model">
+			<ref name="anyAttListOrElements"/>
+		</element>
+	</define>
+	<define name="column-controls">
+		<choice>
+			<element name="form:text">
+				<ref name="form-text-attlist"/>
+				<ref name="common-form-control-content"/>
+			</element>
+			<element name="form:textarea">
+				<ref name="form-textarea-attlist"/>
+				<ref name="common-form-control-content"/>
+				<zeroOrMore>
+					<ref name="text-p"/>
+				</zeroOrMore>
+			</element>
+			<element name="form:formatted-text">
+				<ref name="form-formatted-text-attlist"/>
+				<ref name="common-form-control-content"/>
+			</element>
+			<element name="form:number">
+				<ref name="form-number-attlist"/>
+				<ref name="common-numeric-control-attlist"/>
+				<ref name="common-form-control-content"/>
+				<ref name="common-linked-cell"/>
+				<ref name="common-spin-button"/>
+				<ref name="common-repeat"/>
+				<ref name="common-delay-for-repeat"/>
+			</element>
+			<element name="form:date">
+				<ref name="form-date-attlist"/>
+				<ref name="common-numeric-control-attlist"/>
+				<ref name="common-form-control-content"/>
+				<ref name="common-linked-cell"/>
+				<ref name="common-spin-button"/>
+				<ref name="common-repeat"/>
+				<ref name="common-delay-for-repeat"/>
+			</element>
+			<element name="form:time">
+				<ref name="form-time-attlist"/>
+				<ref name="common-numeric-control-attlist"/>
+				<ref name="common-form-control-content"/>
+				<ref name="common-linked-cell"/>
+				<ref name="common-spin-button"/>
+				<ref name="common-repeat"/>
+				<ref name="common-delay-for-repeat"/>
+			</element>
+			<element name="form:combobox">
+				<ref name="form-combobox-attlist"/>
+				<ref name="common-form-control-content"/>
+				<zeroOrMore>
+					<ref name="form-item"/>
+				</zeroOrMore>
+			</element>
+			<element name="form:listbox">
+				<ref name="form-listbox-attlist"/>
+				<ref name="common-form-control-content"/>
+				<zeroOrMore>
+					<ref name="form-option"/>
+				</zeroOrMore>
+			</element>
+			<element name="form:checkbox">
+				<ref name="form-checkbox-attlist"/>
+				<ref name="common-form-control-content"/>
+			</element>
+		</choice>
+	</define>
+	<define name="controls">
+		<choice>
+			<ref name="column-controls"/>
+			<element name="form:password">
+				<ref name="form-password-attlist"/>
+				<ref name="common-form-control-content"/>
+			</element>
+			<element name="form:file">
+				<ref name="form-file-attlist"/>
+				<ref name="common-form-control-content"/>
+			</element>
+			<element name="form:fixed-text">
+				<ref name="form-fixed-text-attlist"/>
+				<ref name="common-form-control-content"/>
+			</element>
+			<element name="form:button">
+				<ref name="form-button-attlist"/>
+				<ref name="common-form-control-content"/>
+			</element>
+			<element name="form:image">
+				<ref name="form-image-attlist"/>
+				<ref name="common-form-control-content"/>
+			</element>
+			<element name="form:radio">
+				<ref name="form-radio-attlist"/>
+				<ref name="common-form-control-content"/>
+			</element>
+			<element name="form:frame">
+				<ref name="form-frame-attlist"/>
+				<ref name="common-form-control-content"/>
+			</element>
+			<element name="form:image-frame">
+				<ref name="form-image-frame-attlist"/>
+				<ref name="common-form-control-content"/>
+			</element>
+			<element name="form:hidden">
+				<ref name="form-hidden-attlist"/>
+				<ref name="common-form-control-content"/>
+			</element>
+			<element name="form:grid">
+				<ref name="form-grid-attlist"/>
+				<ref name="common-form-control-content"/>
+				<zeroOrMore>
+					<ref name="form-column"/>
+				</zeroOrMore>
+			</element>
+			<element name="form:value-range">
+				<ref name="form-value-range-attlist"/>
+				<ref name="common-form-control-content"/>
+			</element>
+			<element name="form:generic-control">
+				<ref name="form-generic-control-attlist"/>
+				<ref name="common-form-control-content"/>
+			</element>
+		</choice>
+	</define>
+	<define name="form-text-attlist">
+		<ref name="form-control-attlist"/>
+		<ref name="common-current-value-attlist"/>
+		<ref name="common-disabled-attlist"/>
+		<ref name="common-maxlength-attlist"/>
+		<ref name="common-printable-attlist"/>
+		<ref name="common-readonly-attlist"/>
+		<ref name="common-tab-attlist"/>
+		<ref name="common-title-attlist"/>
+		<ref name="common-value-attlist"/>
+		<ref name="common-convert-empty-attlist"/>
+		<ref name="common-data-field-attlist"/>
+		<ref name="common-linked-cell"/>
+	</define>
+	<define name="form-control-attlist">
+		<ref name="common-form-control-attlist"/>
+		<ref name="common-control-id-attlist"/>
+		<ref name="xforms-bind-attlist"/>
+	</define>
+	<define name="common-form-control-content">
+		<optional>
+			<ref name="form-properties"/>
+		</optional>
+		<optional>
+			<ref name="office-event-listeners"/>
+		</optional>
+	</define>
+	<define name="form-textarea-attlist">
+		<ref name="form-control-attlist"/>
+		<ref name="common-current-value-attlist"/>
+		<ref name="common-disabled-attlist"/>
+		<ref name="common-maxlength-attlist"/>
+		<ref name="common-printable-attlist"/>
+		<ref name="common-readonly-attlist"/>
+		<ref name="common-tab-attlist"/>
+		<ref name="common-title-attlist"/>
+		<ref name="common-value-attlist"/>
+		<ref name="common-convert-empty-attlist"/>
+		<ref name="common-data-field-attlist"/>
+		<ref name="common-linked-cell"/>
+	</define>
+	<define name="form-password-attlist">
+		<interleave>
+			<ref name="form-control-attlist"/>
+			<ref name="common-disabled-attlist"/>
+			<ref name="common-maxlength-attlist"/>
+			<ref name="common-printable-attlist"/>
+			<ref name="common-tab-attlist"/>
+			<ref name="common-title-attlist"/>
+			<ref name="common-value-attlist"/>
+			<ref name="common-convert-empty-attlist"/>
+			<ref name="common-linked-cell"/>
+			<optional>
+				<attribute name="form:echo-char">
+					<ref name="character"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="form-file-attlist">
+		<ref name="form-control-attlist"/>
+		<ref name="common-current-value-attlist"/>
+		<ref name="common-disabled-attlist"/>
+		<ref name="common-maxlength-attlist"/>
+		<ref name="common-printable-attlist"/>
+		<ref name="common-readonly-attlist"/>
+		<ref name="common-tab-attlist"/>
+		<ref name="common-title-attlist"/>
+		<ref name="common-value-attlist"/>
+		<ref name="common-linked-cell"/>
+	</define>
+	<define name="form-formatted-text-attlist">
+		<interleave>
+			<ref name="form-control-attlist"/>
+			<ref name="common-current-value-attlist"/>
+			<ref name="common-disabled-attlist"/>
+			<ref name="common-maxlength-attlist"/>
+			<ref name="common-printable-attlist"/>
+			<ref name="common-readonly-attlist"/>
+			<ref name="common-tab-attlist"/>
+			<ref name="common-title-attlist"/>
+			<ref name="common-value-attlist"/>
+			<ref name="common-convert-empty-attlist"/>
+			<ref name="common-data-field-attlist"/>
+			<ref name="common-linked-cell"/>
+			<ref name="common-spin-button"/>
+			<ref name="common-repeat"/>
+			<ref name="common-delay-for-repeat"/>
+			<optional>
+				<attribute name="form:max-value">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="form:min-value">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="form:validation">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="common-numeric-control-attlist">
+		<ref name="form-control-attlist"/>
+		<ref name="common-disabled-attlist"/>
+		<ref name="common-maxlength-attlist"/>
+		<ref name="common-printable-attlist"/>
+		<ref name="common-readonly-attlist"/>
+		<ref name="common-tab-attlist"/>
+		<ref name="common-title-attlist"/>
+		<ref name="common-convert-empty-attlist"/>
+		<ref name="common-data-field-attlist"/>
+	</define>
+	<define name="form-number-attlist">
+		<interleave>
+			<optional>
+				<attribute name="form:value">
+					<ref name="double"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="form:current-value">
+					<ref name="double"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="form:min-value">
+					<ref name="double"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="form:max-value">
+					<ref name="double"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="form-date-attlist">
+		<interleave>
+			<optional>
+				<attribute name="form:value">
+					<ref name="date"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="form:current-value">
+					<ref name="date"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="form:min-value">
+					<ref name="date"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="form:max-value">
+					<ref name="date"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="form-time-attlist">
+		<interleave>
+			<optional>
+				<attribute name="form:value">
+					<ref name="time"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="form:current-value">
+					<ref name="time"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="form:min-value">
+					<ref name="time"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="form:max-value">
+					<ref name="time"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="form-fixed-text-attlist">
+		<interleave>
+			<ref name="form-control-attlist"/>
+			<ref name="for"/>
+			<ref name="common-disabled-attlist"/>
+			<ref name="label"/>
+			<ref name="common-printable-attlist"/>
+			<ref name="common-title-attlist"/>
+			<optional>
+				<attribute name="form:multi-line">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="form-combobox-attlist">
+		<interleave>
+			<ref name="form-control-attlist"/>
+			<ref name="common-current-value-attlist"/>
+			<ref name="common-disabled-attlist"/>
+			<ref name="dropdown"/>
+			<ref name="common-maxlength-attlist"/>
+			<ref name="common-printable-attlist"/>
+			<ref name="common-readonly-attlist"/>
+			<ref name="size"/>
+			<ref name="common-tab-attlist"/>
+			<ref name="common-title-attlist"/>
+			<ref name="common-value-attlist"/>
+			<ref name="common-convert-empty-attlist"/>
+			<ref name="common-data-field-attlist"/>
+			<ref name="list-source"/>
+			<ref name="list-source-type"/>
+			<ref name="common-linked-cell"/>
+			<ref name="common-source-cell-range"/>
+			<optional>
+				<attribute name="form:auto-complete">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="form-item">
+		<element name="form:item">
+			<ref name="form-item-attlist"/>
+			<text/>
+		</element>
+	</define>
+	<define name="form-item-attlist">
+		<ref name="label"/>
+	</define>
+	<define name="form-listbox-attlist">
+		<interleave>
+			<ref name="form-control-attlist"/>
+			<ref name="common-disabled-attlist"/>
+			<ref name="dropdown"/>
+			<ref name="common-printable-attlist"/>
+			<ref name="size"/>
+			<ref name="common-tab-attlist"/>
+			<ref name="common-title-attlist"/>
+			<ref name="bound-column"/>
+			<ref name="common-data-field-attlist"/>
+			<ref name="list-source"/>
+			<ref name="list-source-type"/>
+			<ref name="common-linked-cell"/>
+			<ref name="list-linkage-type"/>
+			<ref name="common-source-cell-range"/>
+			<optional>
+				<attribute name="form:multiple">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="form:xforms-list-source">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="list-linkage-type">
+		<optional>
+			<attribute name="form:list-linkage-type">
+				<choice>
+					<value>selection</value>
+					<value>selection-indices</value>
+				</choice>
+			</attribute>
+		</optional>
+	</define>
+	<define name="form-option">
+		<element name="form:option">
+			<ref name="form-option-attlist"/>
+			<text/>
+		</element>
+	</define>
+	<define name="form-option-attlist">
+		<ref name="current-selected"/>
+		<ref name="selected"/>
+		<ref name="label"/>
+		<ref name="common-value-attlist"/>
+	</define>
+	<define name="form-button-attlist">
+		<interleave>
+			<ref name="form-control-attlist"/>
+			<ref name="button-type"/>
+			<ref name="common-disabled-attlist"/>
+			<ref name="label"/>
+			<ref name="image-data"/>
+			<ref name="common-printable-attlist"/>
+			<ref name="common-tab-attlist"/>
+			<ref name="target-frame"/>
+			<ref name="target-location"/>
+			<ref name="common-title-attlist"/>
+			<ref name="common-value-attlist"/>
+			<ref name="common-form-relative-image-position-attlist"/>
+			<ref name="common-repeat"/>
+			<ref name="common-delay-for-repeat"/>
+			<optional>
+				<attribute name="form:default-button">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="form:toggle">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="form:focus-on-click">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="form:xforms-submission">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="form-image-attlist">
+		<ref name="form-control-attlist"/>
+		<ref name="button-type"/>
+		<ref name="common-disabled-attlist"/>
+		<ref name="image-data"/>
+		<ref name="common-printable-attlist"/>
+		<ref name="common-tab-attlist"/>
+		<ref name="target-frame"/>
+		<ref name="target-location"/>
+		<ref name="common-title-attlist"/>
+		<ref name="common-value-attlist"/>
+	</define>
+	<define name="form-checkbox-attlist">
+		<interleave>
+			<ref name="form-control-attlist"/>
+			<ref name="common-disabled-attlist"/>
+			<ref name="label"/>
+			<ref name="common-printable-attlist"/>
+			<ref name="common-tab-attlist"/>
+			<ref name="common-title-attlist"/>
+			<ref name="common-value-attlist"/>
+			<ref name="common-data-field-attlist"/>
+			<ref name="common-form-visual-effect-attlist"/>
+			<ref name="common-form-relative-image-position-attlist"/>
+			<ref name="common-linked-cell"/>
+			<optional>
+				<attribute name="form:current-state">
+					<ref name="states"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="form:is-tristate">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="form:state">
+					<ref name="states"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="states">
+		<choice>
+			<value>unchecked</value>
+			<value>checked</value>
+			<value>unknown</value>
+		</choice>
+	</define>
+	<define name="form-radio-attlist">
+		<ref name="form-control-attlist"/>
+		<ref name="current-selected"/>
+		<ref name="common-disabled-attlist"/>
+		<ref name="label"/>
+		<ref name="common-printable-attlist"/>
+		<ref name="selected"/>
+		<ref name="common-tab-attlist"/>
+		<ref name="common-title-attlist"/>
+		<ref name="common-value-attlist"/>
+		<ref name="common-data-field-attlist"/>
+		<ref name="common-form-visual-effect-attlist"/>
+		<ref name="common-form-relative-image-position-attlist"/>
+		<ref name="common-linked-cell"/>
+	</define>
+	<define name="form-frame-attlist">
+		<ref name="form-control-attlist"/>
+		<ref name="common-disabled-attlist"/>
+		<ref name="for"/>
+		<ref name="label"/>
+		<ref name="common-printable-attlist"/>
+		<ref name="common-title-attlist"/>
+	</define>
+	<define name="form-image-frame-attlist">
+		<ref name="form-control-attlist"/>
+		<ref name="common-disabled-attlist"/>
+		<ref name="image-data"/>
+		<ref name="common-printable-attlist"/>
+		<ref name="common-readonly-attlist"/>
+		<ref name="common-title-attlist"/>
+		<ref name="common-data-field-attlist"/>
+	</define>
+	<define name="form-hidden-attlist">
+		<ref name="form-control-attlist"/>
+		<ref name="common-value-attlist"/>
+	</define>
+	<define name="form-grid-attlist">
+		<ref name="form-control-attlist"/>
+		<ref name="common-disabled-attlist"/>
+		<ref name="common-printable-attlist"/>
+		<ref name="common-tab-attlist"/>
+		<ref name="common-title-attlist"/>
+	</define>
+	<define name="form-column">
+		<element name="form:column">
+			<ref name="form-column-attlist"/>
+			<oneOrMore>
+				<ref name="column-controls"/>
+			</oneOrMore>
+		</element>
+	</define>
+	<define name="form-column-attlist">
+		<ref name="common-form-control-attlist"/>
+		<ref name="label"/>
+		<ref name="text-style-name"/>
+	</define>
+	<define name="text-style-name">
+		<optional>
+			<attribute name="form:text-style-name">
+				<ref name="styleNameRef"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="form-value-range-attlist">
+		<interleave>
+			<ref name="form-control-attlist"/>
+			<ref name="common-disabled-attlist"/>
+			<ref name="common-printable-attlist"/>
+			<ref name="common-tab-attlist"/>
+			<ref name="common-title-attlist"/>
+			<ref name="common-value-attlist"/>
+			<ref name="common-linked-cell"/>
+			<ref name="common-repeat"/>
+			<ref name="common-delay-for-repeat"/>
+			<optional>
+				<attribute name="form:max-value">
+					<ref name="integer"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="form:min-value">
+					<ref name="integer"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="form:step-size">
+					<ref name="positiveInteger"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="form:page-step-size">
+					<ref name="positiveInteger"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="form:orientation">
+					<choice>
+						<value>horizontal</value>
+						<value>vertical</value>
+					</choice>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="form-generic-control-attlist">
+		<ref name="form-control-attlist"/>
+	</define>
+	<define name="common-form-control-attlist">
+		<interleave>
+			<optional>
+				<attribute name="form:name">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="form:control-implementation">
+					<ref name="namespacedToken"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="xforms-bind-attlist">
+		<optional>
+			<attribute name="xforms:bind">
+				<ref name="string"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="types">
+		<choice>
+			<value>submit</value>
+			<value>reset</value>
+			<value>push</value>
+			<value>url</value>
+		</choice>
+	</define>
+	<define name="button-type">
+		<optional>
+			<attribute name="form:button-type">
+				<ref name="types"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-control-id-attlist">
+		<group>
+			<ref name="xml-id"/>
+			<optional>
+				<attribute name="form:id">
+					<ref name="NCName"/>
+				</attribute>
+			</optional>
+		</group>
+	</define>
+	<define name="current-selected">
+		<optional>
+			<attribute name="form:current-selected">
+				<ref name="boolean"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-value-attlist">
+		<optional>
+			<attribute name="form:value">
+				<ref name="string"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-current-value-attlist">
+		<optional>
+			<attribute name="form:current-value">
+				<ref name="string"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-disabled-attlist">
+		<optional>
+			<attribute name="form:disabled">
+				<ref name="boolean"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="dropdown">
+		<optional>
+			<attribute name="form:dropdown">
+				<ref name="boolean"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="for">
+		<optional>
+			<attribute name="form:for">
+				<ref name="string"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="image-data">
+		<optional>
+			<attribute name="form:image-data">
+				<ref name="anyIRI"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="label">
+		<optional>
+			<attribute name="form:label">
+				<ref name="string"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-maxlength-attlist">
+		<optional>
+			<attribute name="form:max-length">
+				<ref name="nonNegativeInteger"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-printable-attlist">
+		<optional>
+			<attribute name="form:printable">
+				<ref name="boolean"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-readonly-attlist">
+		<optional>
+			<attribute name="form:readonly">
+				<ref name="boolean"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="selected">
+		<optional>
+			<attribute name="form:selected">
+				<ref name="boolean"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="size">
+		<optional>
+			<attribute name="form:size">
+				<ref name="nonNegativeInteger"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-tab-attlist">
+		<interleave>
+			<optional>
+				<attribute name="form:tab-index">
+					<ref name="nonNegativeInteger"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="form:tab-stop">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="target-frame">
+		<optional>
+			<attribute name="office:target-frame">
+				<ref name="targetFrameName"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="target-location">
+		<optional>
+			<attribute name="xlink:href">
+				<ref name="anyIRI"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-title-attlist">
+		<optional>
+			<attribute name="form:title">
+				<ref name="string"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-form-visual-effect-attlist">
+		<optional>
+			<attribute name="form:visual-effect">
+				<choice>
+					<value>flat</value>
+					<value>3d</value>
+				</choice>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-form-relative-image-position-attlist">
+		<choice>
+			<optional>
+				<attribute name="form:image-position">
+					<value>center</value>
+				</attribute>
+			</optional>
+			<group>
+				<attribute name="form:image-position">
+					<choice>
+						<value>start</value>
+						<value>end</value>
+						<value>top</value>
+						<value>bottom</value>
+					</choice>
+				</attribute>
+				<optional>
+					<attribute name="form:image-align">
+						<choice>
+							<value>start</value>
+							<value>center</value>
+							<value>end</value>
+						</choice>
+					</attribute>
+				</optional>
+			</group>
+		</choice>
+	</define>
+	<define name="bound-column">
+		<optional>
+			<attribute name="form:bound-column">
+				<ref name="string"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-convert-empty-attlist">
+		<optional>
+			<attribute name="form:convert-empty-to-null">
+				<ref name="boolean"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-data-field-attlist">
+		<optional>
+			<attribute name="form:data-field">
+				<ref name="string"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="list-source">
+		<optional>
+			<attribute name="form:list-source">
+				<ref name="string"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="list-source-type">
+		<optional>
+			<attribute name="form:list-source-type">
+				<choice>
+					<value>table</value>
+					<value>query</value>
+					<value>sql</value>
+					<value>sql-pass-through</value>
+					<value>value-list</value>
+					<value>table-fields</value>
+				</choice>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-linked-cell">
+		<optional>
+			<attribute name="form:linked-cell">
+				<choice>
+					<ref name="cellAddress"/>
+					<ref name="string"/>
+				</choice>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-source-cell-range">
+		<optional>
+			<attribute name="form:source-cell-range">
+				<choice>
+					<ref name="cellRangeAddress"/>
+					<ref name="string"/>
+				</choice>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-spin-button">
+		<optional>
+			<attribute name="form:spin-button">
+				<ref name="boolean"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-repeat">
+		<optional>
+			<attribute name="form:repeat">
+				<ref name="boolean"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-delay-for-repeat">
+		<optional>
+			<attribute name="form:delay-for-repeat">
+				<ref name="duration"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="form-properties">
+		<element name="form:properties">
+			<oneOrMore>
+				<ref name="form-property"/>
+			</oneOrMore>
+		</element>
+	</define>
+	<define name="form-property">
+		<choice>
+			<element name="form:property">
+				<ref name="form-property-name"/>
+				<ref name="form-property-value-and-type-attlist"/>
+			</element>
+			<element name="form:list-property">
+				<ref name="form-property-name"/>
+				<ref name="form-property-type-and-value-list"/>
+			</element>
+		</choice>
+	</define>
+	<define name="form-property-name">
+		<attribute name="form:property-name">
+			<ref name="string"/>
+		</attribute>
+	</define>
+	<define name="form-property-value-and-type-attlist">
+		<choice>
+			<ref name="common-value-and-type-attlist"/>
+			<attribute name="office:value-type">
+				<value>void</value>
+			</attribute>
+		</choice>
+	</define>
+	<define name="form-property-type-and-value-list">
+		<choice>
+			<group>
+				<attribute name="office:value-type">
+					<value>float</value>
+				</attribute>
+				<zeroOrMore>
+					<element name="form:list-value">
+						<attribute name="office:value">
+							<ref name="double"/>
+						</attribute>
+					</element>
+				</zeroOrMore>
+			</group>
+			<group>
+				<attribute name="office:value-type">
+					<value>percentage</value>
+				</attribute>
+				<zeroOrMore>
+					<element name="form:list-value">
+						<attribute name="office:value">
+							<ref name="double"/>
+						</attribute>
+					</element>
+				</zeroOrMore>
+			</group>
+			<group>
+				<attribute name="office:value-type">
+					<value>currency</value>
+				</attribute>
+				<zeroOrMore>
+					<element name="form:list-value">
+						<attribute name="office:value">
+							<ref name="double"/>
+						</attribute>
+						<optional>
+							<attribute name="office:currency">
+								<ref name="string"/>
+							</attribute>
+						</optional>
+					</element>
+				</zeroOrMore>
+			</group>
+			<group>
+				<attribute name="office:value-type">
+					<value>date</value>
+				</attribute>
+				<zeroOrMore>
+					<element name="form:list-value">
+						<attribute name="office:date-value">
+							<ref name="dateOrDateTime"/>
+						</attribute>
+					</element>
+				</zeroOrMore>
+			</group>
+			<group>
+				<attribute name="office:value-type">
+					<value>time</value>
+				</attribute>
+				<zeroOrMore>
+					<element name="form:list-value">
+						<attribute name="office:time-value">
+							<ref name="duration"/>
+						</attribute>
+					</element>
+				</zeroOrMore>
+			</group>
+			<group>
+				<attribute name="office:value-type">
+					<value>boolean</value>
+				</attribute>
+				<zeroOrMore>
+					<element name="form:list-value">
+						<attribute name="office:boolean-value">
+							<ref name="boolean"/>
+						</attribute>
+					</element>
+				</zeroOrMore>
+			</group>
+			<group>
+				<attribute name="office:value-type">
+					<value>string</value>
+				</attribute>
+				<zeroOrMore>
+					<element name="form:list-value">
+						<attribute name="office:string-value">
+							<ref name="string"/>
+						</attribute>
+					</element>
+				</zeroOrMore>
+			</group>
+			<attribute name="office:value-type">
+				<value>void</value>
+			</attribute>
+		</choice>
+	</define>
+	<define name="office-annotation">
+		<element name="office:annotation">
+			<ref name="office-annotation-attlist"/>
+			<ref name="draw-caption-attlist"/>
+			<ref name="common-draw-position-attlist"/>
+			<ref name="common-draw-size-attlist"/>
+			<ref name="common-draw-shape-with-text-and-styles-attlist"/>
+			<optional>
+				<ref name="dc-creator"/>
+			</optional>
+			<optional>
+				<ref name="dc-date"/>
+			</optional>
+			<optional>
+				<ref name="meta-date-string"/>
+			</optional>
+			<zeroOrMore>
+				<choice>
+					<ref name="text-p"/>
+					<ref name="text-list"/>
+				</choice>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="office-annotation-end">
+		<element name="office:annotation-end">
+			<ref name="office-annotation-end-attlist"/>
+		</element>
+	</define>
+	<define name="office-annotation-attlist">
+		<interleave>
+			<optional>
+				<attribute name="office:display">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<ref name="common-office-annotation-name-attlist"/>
+			</optional>
+		</interleave>
+	</define>
+	<define name="office-annotation-end-attlist">
+		<ref name="common-office-annotation-name-attlist"/>
+	</define>
+	<define name="common-office-annotation-name-attlist">
+		<attribute name="office:name">
+			<ref name="string"/>
+		</attribute>
+	</define>
+	<define name="meta-date-string">
+		<element name="meta:date-string">
+			<ref name="string"/>
+		</element>
+	</define>
+	<define name="common-num-format-prefix-suffix-attlist">
+		<optional>
+			<attribute name="style:num-prefix">
+				<ref name="string"/>
+			</attribute>
+		</optional>
+		<optional>
+			<attribute name="style:num-suffix">
+				<ref name="string"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-num-format-attlist">
+		<choice>
+			<attribute name="style:num-format">
+				<choice>
+					<value>1</value>
+					<value>i</value>
+					<value>I</value>
+					<ref name="string"/>
+					<empty/>
+				</choice>
+			</attribute>
+			<group>
+				<attribute name="style:num-format">
+					<choice>
+						<value>a</value>
+						<value>A</value>
+					</choice>
+				</attribute>
+				<ref name="style-num-letter-sync-attlist"/>
+			</group>
+			<empty/>
+		</choice>
+	</define>
+	<define name="style-num-letter-sync-attlist">
+		<optional>
+			<attribute name="style:num-letter-sync">
+				<ref name="boolean"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="office-change-info">
+		<element name="office:change-info">
+			<ref name="dc-creator"/>
+			<ref name="dc-date"/>
+			<zeroOrMore>
+				<ref name="text-p"/>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="office-event-listeners">
+		<element name="office:event-listeners">
+			<zeroOrMore>
+				<choice>
+					<ref name="script-event-listener"/>
+					<ref name="presentation-event-listener"/>
+				</choice>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="script-event-listener">
+		<element name="script:event-listener">
+			<ref name="script-event-listener-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="script-event-listener-attlist">
+		<interleave>
+			<attribute name="script:event-name">
+				<ref name="string"/>
+			</attribute>
+			<attribute name="script:language">
+				<ref name="string"/>
+			</attribute>
+			<choice>
+				<attribute name="script:macro-name">
+					<ref name="string"/>
+				</attribute>
+				<group>
+					<attribute name="xlink:type">
+						<value>simple</value>
+					</attribute>
+					<attribute name="xlink:href">
+						<ref name="anyIRI"/>
+					</attribute>
+					<optional>
+						<attribute name="xlink:actuate">
+							<value>onRequest</value>
+						</attribute>
+					</optional>
+				</group>
+			</choice>
+		</interleave>
+	</define>
+	<define name="math-math">
+		<element name="math:math">
+			<ref name="mathMarkup"/>
+		</element>
+	</define>
+	<define name="mathMarkup">
+		<dc:description>To avoid inclusion of the complete MathML schema, anything is allowed within a math:math top-level element</dc:description>
+		<zeroOrMore>
+			<choice>
+				<attribute>
+					<anyName/>
+				</attribute>
+				<text/>
+				<element>
+					<anyName/>
+					<ref name="mathMarkup"/>
+				</element>
+			</choice>
+		</zeroOrMore>
+	</define>
+	<define name="text-dde-connection-decl">
+		<element name="text:dde-connection-decl">
+			<ref name="text-dde-connection-decl-attlist"/>
+			<ref name="common-dde-connection-decl-attlist"/>
+		</element>
+	</define>
+	<define name="text-dde-connection-decl-attlist">
+		<attribute name="office:name">
+			<ref name="string"/>
+		</attribute>
+	</define>
+	<define name="common-dde-connection-decl-attlist">
+		<interleave>
+			<attribute name="office:dde-application">
+				<ref name="string"/>
+			</attribute>
+			<attribute name="office:dde-topic">
+				<ref name="string"/>
+			</attribute>
+			<attribute name="office:dde-item">
+				<ref name="string"/>
+			</attribute>
+			<optional>
+				<attribute name="office:automatic-update">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="table-dde-link">
+		<element name="table:dde-link">
+			<ref name="office-dde-source"/>
+			<ref name="table-table"/>
+		</element>
+	</define>
+	<define name="office-dde-source">
+		<element name="office:dde-source">
+			<ref name="office-dde-source-attlist"/>
+			<ref name="common-dde-connection-decl-attlist"/>
+		</element>
+	</define>
+	<define name="office-dde-source-attlist">
+		<interleave>
+			<optional>
+				<attribute name="office:name">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="office:conversion-mode">
+					<choice>
+						<value>into-default-style-data-style</value>
+						<value>into-english-number</value>
+						<value>keep-text</value>
+					</choice>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="animation-element">
+		<choice>
+			<element name="anim:animate">
+				<ref name="common-anim-target-attlist"/>
+				<ref name="common-anim-named-target-attlist"/>
+				<ref name="common-anim-values-attlist"/>
+				<ref name="common-anim-spline-mode-attlist"/>
+				<ref name="common-spline-anim-value-attlist"/>
+				<ref name="common-timing-attlist"/>
+				<ref name="common-anim-add-accum-attlist"/>
+			</element>
+			<element name="anim:set">
+				<ref name="common-anim-target-attlist"/>
+				<ref name="common-anim-named-target-attlist"/>
+				<ref name="common-anim-set-values-attlist"/>
+				<ref name="common-timing-attlist"/>
+				<ref name="common-anim-add-accum-attlist"/>
+			</element>
+			<element name="anim:animateMotion">
+				<ref name="anim-animate-motion-attlist"/>
+				<ref name="common-anim-target-attlist"/>
+				<ref name="common-anim-named-target-attlist"/>
+				<ref name="common-anim-add-accum-attlist"/>
+				<ref name="common-anim-values-attlist"/>
+				<ref name="common-timing-attlist"/>
+				<ref name="common-spline-anim-value-attlist"/>
+			</element>
+			<element name="anim:animateColor">
+				<ref name="common-anim-target-attlist"/>
+				<ref name="common-anim-named-target-attlist"/>
+				<ref name="common-anim-add-accum-attlist"/>
+				<ref name="common-anim-values-attlist"/>
+				<ref name="common-anim-spline-mode-attlist"/>
+				<ref name="common-spline-anim-value-attlist"/>
+				<ref name="anim-animate-color-attlist"/>
+				<ref name="common-timing-attlist"/>
+			</element>
+			<element name="anim:animateTransform">
+				<ref name="common-anim-target-attlist"/>
+				<ref name="common-anim-named-target-attlist"/>
+				<ref name="common-anim-add-accum-attlist"/>
+				<ref name="common-anim-values-attlist"/>
+				<ref name="anim-animate-transform-attlist"/>
+				<ref name="common-timing-attlist"/>
+			</element>
+			<element name="anim:transitionFilter">
+				<ref name="common-anim-target-attlist"/>
+				<ref name="common-anim-add-accum-attlist"/>
+				<ref name="common-anim-values-attlist"/>
+				<ref name="common-anim-spline-mode-attlist"/>
+				<ref name="anim-transition-filter-attlist"/>
+				<ref name="common-timing-attlist"/>
+			</element>
+			<element name="anim:par">
+				<ref name="common-anim-attlist"/>
+				<ref name="common-timing-attlist"/>
+				<ref name="common-endsync-timing-attlist"/>
+				<zeroOrMore>
+					<ref name="animation-element"/>
+				</zeroOrMore>
+			</element>
+			<element name="anim:seq">
+				<ref name="common-anim-attlist"/>
+				<ref name="common-endsync-timing-attlist"/>
+				<ref name="common-timing-attlist"/>
+				<zeroOrMore>
+					<ref name="animation-element"/>
+				</zeroOrMore>
+			</element>
+			<element name="anim:iterate">
+				<ref name="common-anim-attlist"/>
+				<ref name="anim-iterate-attlist"/>
+				<ref name="common-timing-attlist"/>
+				<ref name="common-endsync-timing-attlist"/>
+				<zeroOrMore>
+					<ref name="animation-element"/>
+				</zeroOrMore>
+			</element>
+			<element name="anim:audio">
+				<ref name="common-anim-attlist"/>
+				<ref name="anim-audio-attlist"/>
+				<ref name="common-basic-timing-attlist"/>
+			</element>
+			<element name="anim:command">
+				<ref name="common-anim-attlist"/>
+				<ref name="anim-command-attlist"/>
+				<ref name="common-begin-end-timing-attlist"/>
+				<ref name="common-anim-target-attlist"/>
+				<zeroOrMore>
+					<element name="anim:param">
+						<attribute name="anim:name">
+							<ref name="string"/>
+						</attribute>
+						<attribute name="anim:value">
+							<ref name="string"/>
+						</attribute>
+					</element>
+				</zeroOrMore>
+			</element>
+		</choice>
+	</define>
+	<define name="anim-animate-motion-attlist">
+		<interleave>
+			<optional>
+				<attribute name="svg:path">
+					<ref name="pathData"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="svg:origin">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="smil:calcMode">
+					<choice>
+						<value>discrete</value>
+						<value>linear</value>
+						<value>paced</value>
+						<value>spline</value>
+					</choice>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="anim-animate-color-attlist">
+		<interleave>
+			<optional>
+				<attribute name="anim:color-interpolation">
+					<choice>
+						<value>rgb</value>
+						<value>hsl</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="anim:color-interpolation-direction">
+					<choice>
+						<value>clockwise</value>
+						<value>counter-clockwise</value>
+					</choice>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="anim-animate-transform-attlist">
+		<attribute name="svg:type">
+			<choice>
+				<value>translate</value>
+				<value>scale</value>
+				<value>rotate</value>
+				<value>skewX</value>
+				<value>skewY</value>
+			</choice>
+		</attribute>
+	</define>
+	<define name="anim-transition-filter-attlist">
+		<interleave>
+			<attribute name="smil:type">
+				<ref name="string"/>
+			</attribute>
+			<optional>
+				<attribute name="smil:subtype">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="smil:direction">
+					<choice>
+						<value>forward</value>
+						<value>reverse</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="smil:fadeColor">
+					<ref name="color"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="smil:mode">
+					<choice>
+						<value>in</value>
+						<value>out</value>
+					</choice>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="common-anim-target-attlist">
+		<interleave>
+			<optional>
+				<attribute name="smil:targetElement">
+					<ref name="IDREF"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="anim:sub-item">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="common-anim-named-target-attlist">
+		<attribute name="smil:attributeName">
+			<ref name="string"/>
+		</attribute>
+	</define>
+	<define name="common-anim-values-attlist">
+		<interleave>
+			<optional>
+				<attribute name="smil:values">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="anim:formula">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<ref name="common-anim-set-values-attlist"/>
+			<optional>
+				<attribute name="smil:from">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="smil:by">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="common-anim-spline-mode-attlist">
+		<optional>
+			<attribute name="smil:calcMode">
+				<choice>
+					<value>discrete</value>
+					<value>linear</value>
+					<value>paced</value>
+					<value>spline</value>
+				</choice>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-spline-anim-value-attlist">
+		<interleave>
+			<optional>
+				<attribute name="smil:keyTimes">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="smil:keySplines">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="common-anim-add-accum-attlist">
+		<interleave>
+			<optional>
+				<attribute name="smil:accumulate">
+					<choice>
+						<value>none</value>
+						<value>sum</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="smil:additive">
+					<choice>
+						<value>replace</value>
+						<value>sum</value>
+					</choice>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="common-anim-set-values-attlist">
+		<optional>
+			<attribute name="smil:to">
+				<ref name="string"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-begin-end-timing-attlist">
+		<interleave>
+			<optional>
+				<attribute name="smil:begin">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="smil:end">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="common-dur-timing-attlist">
+		<optional>
+			<attribute name="smil:dur">
+				<ref name="string"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-endsync-timing-attlist">
+		<optional>
+			<attribute name="smil:endsync">
+				<choice>
+					<value>first</value>
+					<value>last</value>
+					<value>all</value>
+					<value>media</value>
+					<ref name="IDREF"/>
+				</choice>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-repeat-timing-attlist">
+		<optional>
+			<attribute name="smil:repeatDur">
+				<ref name="string"/>
+			</attribute>
+		</optional>
+		<optional>
+			<attribute name="smil:repeatCount">
+				<choice>
+					<ref name="nonNegativeDecimal"/>
+					<value>indefinite</value>
+				</choice>
+			</attribute>
+		</optional>
+	</define>
+	<define name="nonNegativeDecimal">
+		<data type="decimal">
+			<param name="minInclusive">0.0</param>
+		</data>
+	</define>
+	<define name="common-fill-timing-attlist">
+		<optional>
+			<attribute name="smil:fill">
+				<choice>
+					<value>remove</value>
+					<value>freeze</value>
+					<value>hold</value>
+					<value>auto</value>
+					<value>default</value>
+					<value>transition</value>
+				</choice>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-fill-default-attlist">
+		<optional>
+			<attribute name="smil:fillDefault">
+				<choice>
+					<value>remove</value>
+					<value>freeze</value>
+					<value>hold</value>
+					<value>transition</value>
+					<value>auto</value>
+					<value>inherit</value>
+				</choice>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-restart-timing-attlist">
+		<optional>
+			<attribute name="smil:restart">
+				<choice>
+					<value>never</value>
+					<value>always</value>
+					<value>whenNotActive</value>
+					<value>default</value>
+				</choice>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-restart-default-attlist">
+		<optional>
+			<attribute name="smil:restartDefault">
+				<choice>
+					<value>never</value>
+					<value>always</value>
+					<value>whenNotActive</value>
+					<value>inherit</value>
+				</choice>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-time-manip-attlist">
+		<interleave>
+			<optional>
+				<attribute name="smil:accelerate">
+					<ref name="zeroToOneDecimal"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="smil:decelerate">
+					<ref name="zeroToOneDecimal"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="smil:autoReverse">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="zeroToOneDecimal">
+		<data type="decimal">
+			<param name="minInclusive">0</param>
+			<param name="maxInclusive">1</param>
+		</data>
+	</define>
+	<define name="common-basic-timing-attlist">
+		<ref name="common-begin-end-timing-attlist"/>
+		<ref name="common-dur-timing-attlist"/>
+		<ref name="common-repeat-timing-attlist"/>
+		<ref name="common-restart-timing-attlist"/>
+		<ref name="common-restart-default-attlist"/>
+		<ref name="common-fill-timing-attlist"/>
+		<ref name="common-fill-default-attlist"/>
+	</define>
+	<define name="common-timing-attlist">
+		<ref name="common-basic-timing-attlist"/>
+		<ref name="common-time-manip-attlist"/>
+	</define>
+	<define name="anim-iterate-attlist">
+		<interleave>
+			<ref name="common-anim-target-attlist"/>
+			<optional>
+				<attribute name="anim:iterate-type">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="anim:iterate-interval">
+					<ref name="duration"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="anim-audio-attlist">
+		<interleave>
+			<optional>
+				<attribute name="xlink:href">
+					<ref name="anyIRI"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="anim:audio-level">
+					<ref name="double"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="anim-command-attlist">
+		<attribute name="anim:command">
+			<ref name="string"/>
+		</attribute>
+	</define>
+	<define name="style-style">
+		<element name="style:style">
+			<ref name="style-style-attlist"/>
+			<ref name="style-style-content"/>
+			<zeroOrMore>
+				<ref name="style-map"/>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="common-in-content-meta-attlist">
+		<attribute name="xhtml:about">
+			<ref name="URIorSafeCURIE"/>
+		</attribute>
+		<attribute name="xhtml:property">
+			<ref name="CURIEs"/>
+		</attribute>
+		<ref name="common-meta-literal-attlist"/>
+	</define>
+	<define name="common-meta-literal-attlist">
+		<optional>
+			<attribute name="xhtml:datatype">
+				<ref name="CURIE"/>
+			</attribute>
+		</optional>
+		<optional>
+			<attribute name="xhtml:content">
+				<ref name="string"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="xml-id">
+		<attribute name="xml:id">
+			<ref name="ID"/>
+		</attribute>
+	</define>
+	<define name="style-style-attlist">
+		<interleave>
+			<attribute name="style:name">
+				<ref name="styleName"/>
+			</attribute>
+			<optional>
+				<attribute name="style:display-name">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:parent-style-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:next-style-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:list-level">
+					<choice>
+						<ref name="positiveInteger"/>
+						<empty/>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:list-style-name">
+					<choice>
+						<ref name="styleName"/>
+						<empty/>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:master-page-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:auto-update">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:data-style-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:percentage-data-style-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:class">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:default-outline-level">
+					<choice>
+						<ref name="positiveInteger"/>
+						<empty/>
+					</choice>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="style-map">
+		<element name="style:map">
+			<ref name="style-map-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="style-map-attlist">
+		<interleave>
+			<attribute name="style:condition">
+				<ref name="string"/>
+			</attribute>
+			<attribute name="style:apply-style-name">
+				<ref name="styleNameRef"/>
+			</attribute>
+			<optional>
+				<attribute name="style:base-cell-address">
+					<ref name="cellAddress"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="style-default-style">
+		<element name="style:default-style">
+			<ref name="style-style-content"/>
+		</element>
+	</define>
+	<define name="style-page-layout">
+		<element name="style:page-layout">
+			<ref name="style-page-layout-attlist"/>
+			<ref name="style-page-layout-content"/>
+		</element>
+	</define>
+	<define name="style-page-layout-content">
+		<optional>
+			<ref name="style-page-layout-properties"/>
+		</optional>
+		<optional>
+			<ref name="style-header-style"/>
+		</optional>
+		<optional>
+			<ref name="style-footer-style"/>
+		</optional>
+	</define>
+	<define name="style-page-layout-attlist">
+		<interleave>
+			<attribute name="style:name">
+				<ref name="styleName"/>
+			</attribute>
+			<optional>
+				<attribute name="style:page-usage">
+					<choice>
+						<value>all</value>
+						<value>left</value>
+						<value>right</value>
+						<value>mirrored</value>
+					</choice>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="style-header-style">
+		<element name="style:header-style">
+			<optional>
+				<ref name="style-header-footer-properties"/>
+			</optional>
+		</element>
+	</define>
+	<define name="style-footer-style">
+		<element name="style:footer-style">
+			<optional>
+				<ref name="style-header-footer-properties"/>
+			</optional>
+		</element>
+	</define>
+	<define name="style-default-page-layout">
+		<element name="style:default-page-layout">
+			<ref name="style-page-layout-content"/>
+		</element>
+	</define>
+	<define name="style-master-page">
+		<element name="style:master-page">
+			<ref name="style-master-page-attlist"/>
+			<optional>
+				<ref name="style-header"/>
+				<optional>
+					<ref name="style-header-left"/>
+				</optional>
+			</optional>
+			<optional>
+				<ref name="style-footer"/>
+				<optional>
+					<ref name="style-footer-left"/>
+				</optional>
+			</optional>
+			<optional>
+				<ref name="draw-layer-set"/>
+			</optional>
+			<optional>
+				<ref name="office-forms"/>
+			</optional>
+			<zeroOrMore>
+				<ref name="shape"/>
+			</zeroOrMore>
+			<optional>
+				<ref name="animation-element"/>
+			</optional>
+			<optional>
+				<ref name="presentation-notes"/>
+			</optional>
+		</element>
+	</define>
+	<define name="style-master-page-attlist">
+		<interleave>
+			<attribute name="style:name">
+				<ref name="styleName"/>
+			</attribute>
+			<optional>
+				<attribute name="style:display-name">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<attribute name="style:page-layout-name">
+				<ref name="styleNameRef"/>
+			</attribute>
+			<optional>
+				<attribute name="draw:style-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:next-style-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="style-header">
+		<element name="style:header">
+			<ref name="common-style-header-footer-attlist"/>
+			<ref name="header-footer-content"/>
+		</element>
+	</define>
+	<define name="style-footer">
+		<element name="style:footer">
+			<ref name="common-style-header-footer-attlist"/>
+			<ref name="header-footer-content"/>
+		</element>
+	</define>
+	<define name="style-header-left">
+		<element name="style:header-left">
+			<ref name="common-style-header-footer-attlist"/>
+			<ref name="header-footer-content"/>
+		</element>
+	</define>
+	<define name="style-footer-left">
+		<element name="style:footer-left">
+			<ref name="common-style-header-footer-attlist"/>
+			<ref name="header-footer-content"/>
+		</element>
+	</define>
+	<define name="header-footer-content">
+		<choice>
+			<group>
+				<ref name="text-tracked-changes"/>
+				<ref name="text-decls"/>
+				<zeroOrMore>
+					<choice>
+						<ref name="text-h"/>
+						<ref name="text-p"/>
+						<ref name="text-list"/>
+						<ref name="table-table"/>
+						<ref name="text-section"/>
+						<ref name="text-table-of-content"/>
+						<ref name="text-illustration-index"/>
+						<ref name="text-table-index"/>
+						<ref name="text-object-index"/>
+						<ref name="text-user-index"/>
+						<ref name="text-alphabetical-index"/>
+						<ref name="text-bibliography"/>
+						<ref name="text-index-title"/>
+						<ref name="change-marks"/>
+					</choice>
+				</zeroOrMore>
+			</group>
+			<group>
+				<optional>
+					<ref name="style-region-left"/>
+				</optional>
+				<optional>
+					<ref name="style-region-center"/>
+				</optional>
+				<optional>
+					<ref name="style-region-right"/>
+				</optional>
+			</group>
+		</choice>
+	</define>
+	<define name="common-style-header-footer-attlist">
+		<optional>
+			<attribute name="style:display">
+				<ref name="boolean"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="style-region-left">
+		<element name="style:region-left">
+			<ref name="region-content"/>
+		</element>
+	</define>
+	<define name="style-region-center">
+		<element name="style:region-center">
+			<ref name="region-content"/>
+		</element>
+	</define>
+	<define name="style-region-right">
+		<element name="style:region-right">
+			<ref name="region-content"/>
+		</element>
+	</define>
+	<define name="region-content">
+		<zeroOrMore>
+			<ref name="text-p"/>
+		</zeroOrMore>
+	</define>
+	<define name="presentation-notes">
+		<element name="presentation:notes">
+			<ref name="common-presentation-header-footer-attlist"/>
+			<ref name="presentation-notes-attlist"/>
+			<ref name="office-forms"/>
+			<zeroOrMore>
+				<ref name="shape"/>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="presentation-notes-attlist">
+		<interleave>
+			<optional>
+				<attribute name="style:page-layout-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:style-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="table-table-template">
+		<element name="table:table-template">
+			<ref name="table-table-template-attlist"/>
+			<optional>
+				<ref name="table-first-row"/>
+			</optional>
+			<optional>
+				<ref name="table-last-row"/>
+			</optional>
+			<optional>
+				<ref name="table-first-column"/>
+			</optional>
+			<optional>
+				<ref name="table-last-column"/>
+			</optional>
+			<ref name="table-body"/>
+			<optional>
+				<ref name="table-even-rows"/>
+			</optional>
+			<optional>
+				<ref name="table-odd-rows"/>
+			</optional>
+			<optional>
+				<ref name="table-even-columns"/>
+			</optional>
+			<optional>
+				<ref name="table-odd-columns"/>
+			</optional>
+			<optional>
+				<ref name="table-background"/>
+			</optional>
+		</element>
+	</define>
+	<define name="table-table-template-attlist">
+		<interleave>
+			<attribute name="table:name">
+				<ref name="string"/>
+			</attribute>
+			<attribute name="table:first-row-start-column">
+				<ref name="rowOrCol"/>
+			</attribute>
+			<attribute name="table:first-row-end-column">
+				<ref name="rowOrCol"/>
+			</attribute>
+			<attribute name="table:last-row-start-column">
+				<ref name="rowOrCol"/>
+			</attribute>
+			<attribute name="table:last-row-end-column">
+				<ref name="rowOrCol"/>
+			</attribute>
+		</interleave>
+	</define>
+	<define name="rowOrCol">
+		<choice>
+			<value>row</value>
+			<value>column</value>
+		</choice>
+	</define>
+	<define name="table-first-row">
+		<element name="table:first-row">
+			<ref name="common-table-template-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="table-last-row">
+		<element name="table:last-row">
+			<ref name="common-table-template-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="table-first-column">
+		<element name="table:first-column">
+			<ref name="common-table-template-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="table-last-column">
+		<element name="table:last-column">
+			<ref name="common-table-template-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="table-body">
+		<element name="table:body">
+			<ref name="common-table-template-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="table-even-rows">
+		<element name="table:even-rows">
+			<ref name="common-table-template-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="table-odd-rows">
+		<element name="table:odd-rows">
+			<ref name="common-table-template-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="table-even-columns">
+		<element name="table:even-columns">
+			<ref name="common-table-template-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="table-odd-columns">
+		<element name="table:odd-columns">
+			<ref name="common-table-template-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="common-table-template-attlist">
+		<attribute name="table:style-name">
+			<ref name="styleNameRef"/>
+		</attribute>
+		<optional>
+			<attribute name="table:paragraph-style-name">
+				<ref name="styleNameRef"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="table-background">
+		<element name="table:background">
+			<ref name="table-background-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="table-background-attlist">
+		<attribute name="table:style-name">
+			<ref name="styleNameRef"/>
+		</attribute>
+	</define>
+	<define name="style-font-face">
+		<element name="style:font-face">
+			<ref name="style-font-face-attlist"/>
+			<optional>
+				<ref name="svg-font-face-src"/>
+			</optional>
+			<optional>
+				<ref name="svg-definition-src"/>
+			</optional>
+		</element>
+	</define>
+	<define name="style-font-face-attlist">
+		<interleave>
+			<optional>
+				<attribute name="svg:font-family">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="svg:font-style">
+					<ref name="fontStyle"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="svg:font-variant">
+					<ref name="fontVariant"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="svg:font-weight">
+					<ref name="fontWeight"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="svg:font-stretch">
+					<choice>
+						<value>normal</value>
+						<value>ultra-condensed</value>
+						<value>extra-condensed</value>
+						<value>condensed</value>
+						<value>semi-condensed</value>
+						<value>semi-expanded</value>
+						<value>expanded</value>
+						<value>extra-expanded</value>
+						<value>ultra-expanded</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="svg:font-size">
+					<ref name="positiveLength"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="svg:unicode-range">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="svg:units-per-em">
+					<ref name="integer"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="svg:panose-1">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="svg:stemv">
+					<ref name="integer"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="svg:stemh">
+					<ref name="integer"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="svg:slope">
+					<ref name="integer"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="svg:cap-height">
+					<ref name="integer"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="svg:x-height">
+					<ref name="integer"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="svg:accent-height">
+					<ref name="integer"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="svg:ascent">
+					<ref name="integer"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="svg:descent">
+					<ref name="integer"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="svg:widths">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="svg:bbox">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="svg:ideographic">
+					<ref name="integer"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="svg:alphabetic">
+					<ref name="integer"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="svg:mathematical">
+					<ref name="integer"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="svg:hanging">
+					<ref name="integer"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="svg:v-ideographic">
+					<ref name="integer"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="svg:v-alphabetic">
+					<ref name="integer"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="svg:v-mathematical">
+					<ref name="integer"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="svg:v-hanging">
+					<ref name="integer"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="svg:underline-position">
+					<ref name="integer"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="svg:underline-thickness">
+					<ref name="integer"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="svg:strikethrough-position">
+					<ref name="integer"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="svg:strikethrough-thickness">
+					<ref name="integer"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="svg:overline-position">
+					<ref name="integer"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="svg:overline-thickness">
+					<ref name="integer"/>
+				</attribute>
+			</optional>
+			<attribute name="style:name">
+				<ref name="string"/>
+			</attribute>
+			<optional>
+				<attribute name="style:font-adornments">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:font-family-generic">
+					<ref name="fontFamilyGeneric"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:font-pitch">
+					<ref name="fontPitch"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:font-charset">
+					<ref name="textEncoding"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="svg-font-face-src">
+		<element name="svg:font-face-src">
+			<oneOrMore>
+				<choice>
+					<ref name="svg-font-face-uri"/>
+					<ref name="svg-font-face-name"/>
+				</choice>
+			</oneOrMore>
+		</element>
+	</define>
+	<define name="svg-font-face-uri">
+		<element name="svg:font-face-uri">
+			<ref name="common-svg-font-face-xlink-attlist"/>
+			<zeroOrMore>
+				<ref name="svg-font-face-format"/>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="svg-font-face-format">
+		<element name="svg:font-face-format">
+			<optional>
+				<attribute name="svg:string">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<empty/>
+		</element>
+	</define>
+	<define name="svg-font-face-name">
+		<element name="svg:font-face-name">
+			<optional>
+				<attribute name="svg:name">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<empty/>
+		</element>
+	</define>
+	<define name="svg-definition-src">
+		<element name="svg:definition-src">
+			<ref name="common-svg-font-face-xlink-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="common-svg-font-face-xlink-attlist">
+		<attribute name="xlink:type">
+			<value>simple</value>
+		</attribute>
+		<attribute name="xlink:href">
+			<ref name="anyIRI"/>
+		</attribute>
+		<optional>
+			<attribute name="xlink:actuate">
+				<value>onRequest</value>
+			</attribute>
+		</optional>
+	</define>
+	<define name="number-number-style">
+		<element name="number:number-style">
+			<ref name="common-data-style-attlist"/>
+			<optional>
+				<ref name="style-text-properties"/>
+			</optional>
+			<optional>
+				<ref name="number-text"/>
+			</optional>
+			<optional>
+				<ref name="any-number"/>
+				<optional>
+					<ref name="number-text"/>
+				</optional>
+			</optional>
+			<zeroOrMore>
+				<ref name="style-map"/>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="any-number">
+		<choice>
+			<ref name="number-number"/>
+			<ref name="number-scientific-number"/>
+			<ref name="number-fraction"/>
+		</choice>
+	</define>
+	<define name="number-number">
+		<element name="number:number">
+			<ref name="number-number-attlist"/>
+			<ref name="common-decimal-places-attlist"/>
+			<ref name="common-number-attlist"/>
+			<zeroOrMore>
+				<ref name="number-embedded-text"/>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="number-number-attlist">
+		<interleave>
+			<optional>
+				<attribute name="number:decimal-replacement">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="number:display-factor">
+					<ref name="double"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="number-embedded-text">
+		<element name="number:embedded-text">
+			<ref name="number-embedded-text-attlist"/>
+			<text/>
+		</element>
+	</define>
+	<define name="number-embedded-text-attlist">
+		<attribute name="number:position">
+			<ref name="integer"/>
+		</attribute>
+	</define>
+	<define name="number-scientific-number">
+		<element name="number:scientific-number">
+			<ref name="number-scientific-number-attlist"/>
+			<ref name="common-decimal-places-attlist"/>
+			<ref name="common-number-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="number-scientific-number-attlist">
+		<optional>
+			<attribute name="number:min-exponent-digits">
+				<ref name="integer"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="number-fraction">
+		<element name="number:fraction">
+			<ref name="number-fraction-attlist"/>
+			<ref name="common-number-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="number-fraction-attlist">
+		<interleave>
+			<optional>
+				<attribute name="number:min-numerator-digits">
+					<ref name="integer"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="number:min-denominator-digits">
+					<ref name="integer"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="number:denominator-value">
+					<ref name="integer"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="number-currency-style">
+		<element name="number:currency-style">
+			<ref name="common-data-style-attlist"/>
+			<ref name="common-auto-reorder-attlist"/>
+			<optional>
+				<ref name="style-text-properties"/>
+			</optional>
+			<optional>
+				<ref name="number-text"/>
+			</optional>
+			<optional>
+				<choice>
+					<group>
+						<ref name="number-and-text"/>
+						<optional>
+							<ref name="currency-symbol-and-text"/>
+						</optional>
+					</group>
+					<group>
+						<ref name="currency-symbol-and-text"/>
+						<optional>
+							<ref name="number-and-text"/>
+						</optional>
+					</group>
+				</choice>
+			</optional>
+			<zeroOrMore>
+				<ref name="style-map"/>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="currency-symbol-and-text">
+		<ref name="number-currency-symbol"/>
+		<optional>
+			<ref name="number-text"/>
+		</optional>
+	</define>
+	<define name="number-and-text">
+		<ref name="number-number"/>
+		<optional>
+			<ref name="number-text"/>
+		</optional>
+	</define>
+	<define name="number-currency-symbol">
+		<element name="number:currency-symbol">
+			<ref name="number-currency-symbol-attlist"/>
+			<text/>
+		</element>
+	</define>
+	<define name="number-currency-symbol-attlist">
+		<optional>
+			<attribute name="number:language">
+				<ref name="languageCode"/>
+			</attribute>
+		</optional>
+		<optional>
+			<attribute name="number:country">
+				<ref name="countryCode"/>
+			</attribute>
+		</optional>
+		<optional>
+			<attribute name="number:script">
+				<ref name="scriptCode"/>
+			</attribute>
+		</optional>
+		<optional>
+			<attribute name="number:rfc-language-tag">
+				<ref name="language"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="number-percentage-style">
+		<element name="number:percentage-style">
+			<ref name="common-data-style-attlist"/>
+			<optional>
+				<ref name="style-text-properties"/>
+			</optional>
+			<optional>
+				<ref name="number-text"/>
+			</optional>
+			<optional>
+				<ref name="number-and-text"/>
+			</optional>
+			<zeroOrMore>
+				<ref name="style-map"/>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="number-date-style">
+		<element name="number:date-style">
+			<ref name="common-data-style-attlist"/>
+			<ref name="common-auto-reorder-attlist"/>
+			<ref name="common-format-source-attlist"/>
+			<optional>
+				<ref name="style-text-properties"/>
+			</optional>
+			<optional>
+				<ref name="number-text"/>
+			</optional>
+			<oneOrMore>
+				<ref name="any-date"/>
+				<optional>
+					<ref name="number-text"/>
+				</optional>
+			</oneOrMore>
+			<zeroOrMore>
+				<ref name="style-map"/>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="any-date">
+		<choice>
+			<ref name="number-day"/>
+			<ref name="number-month"/>
+			<ref name="number-year"/>
+			<ref name="number-era"/>
+			<ref name="number-day-of-week"/>
+			<ref name="number-week-of-year"/>
+			<ref name="number-quarter"/>
+			<ref name="number-hours"/>
+			<ref name="number-am-pm"/>
+			<ref name="number-minutes"/>
+			<ref name="number-seconds"/>
+		</choice>
+	</define>
+	<define name="number-day">
+		<element name="number:day">
+			<ref name="number-day-attlist"/>
+			<ref name="common-calendar-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="number-day-attlist">
+		<optional>
+			<attribute name="number:style">
+				<choice>
+					<value>short</value>
+					<value>long</value>
+				</choice>
+			</attribute>
+		</optional>
+	</define>
+	<define name="number-month">
+		<element name="number:month">
+			<ref name="number-month-attlist"/>
+			<ref name="common-calendar-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="number-month-attlist">
+		<interleave>
+			<optional>
+				<attribute name="number:textual">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="number:possessive-form">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="number:style">
+					<choice>
+						<value>short</value>
+						<value>long</value>
+					</choice>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="number-year">
+		<element name="number:year">
+			<ref name="number-year-attlist"/>
+			<ref name="common-calendar-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="number-year-attlist">
+		<optional>
+			<attribute name="number:style">
+				<choice>
+					<value>short</value>
+					<value>long</value>
+				</choice>
+			</attribute>
+		</optional>
+	</define>
+	<define name="number-era">
+		<element name="number:era">
+			<ref name="number-era-attlist"/>
+			<ref name="common-calendar-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="number-era-attlist">
+		<optional>
+			<attribute name="number:style">
+				<choice>
+					<value>short</value>
+					<value>long</value>
+				</choice>
+			</attribute>
+		</optional>
+	</define>
+	<define name="number-day-of-week">
+		<element name="number:day-of-week">
+			<ref name="number-day-of-week-attlist"/>
+			<ref name="common-calendar-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="number-day-of-week-attlist">
+		<optional>
+			<attribute name="number:style">
+				<choice>
+					<value>short</value>
+					<value>long</value>
+				</choice>
+			</attribute>
+		</optional>
+	</define>
+	<define name="number-week-of-year">
+		<element name="number:week-of-year">
+			<ref name="common-calendar-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="number-quarter">
+		<element name="number:quarter">
+			<ref name="number-quarter-attlist"/>
+			<ref name="common-calendar-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="number-quarter-attlist">
+		<optional>
+			<attribute name="number:style">
+				<choice>
+					<value>short</value>
+					<value>long</value>
+				</choice>
+			</attribute>
+		</optional>
+	</define>
+	<define name="number-time-style">
+		<element name="number:time-style">
+			<ref name="number-time-style-attlist"/>
+			<ref name="common-data-style-attlist"/>
+			<ref name="common-format-source-attlist"/>
+			<optional>
+				<ref name="style-text-properties"/>
+			</optional>
+			<optional>
+				<ref name="number-text"/>
+			</optional>
+			<oneOrMore>
+				<ref name="any-time"/>
+				<optional>
+					<ref name="number-text"/>
+				</optional>
+			</oneOrMore>
+			<zeroOrMore>
+				<ref name="style-map"/>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="any-time">
+		<choice>
+			<ref name="number-hours"/>
+			<ref name="number-am-pm"/>
+			<ref name="number-minutes"/>
+			<ref name="number-seconds"/>
+		</choice>
+	</define>
+	<define name="number-time-style-attlist">
+		<optional>
+			<attribute name="number:truncate-on-overflow">
+				<ref name="boolean"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="number-hours">
+		<element name="number:hours">
+			<ref name="number-hours-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="number-hours-attlist">
+		<optional>
+			<attribute name="number:style">
+				<choice>
+					<value>short</value>
+					<value>long</value>
+				</choice>
+			</attribute>
+		</optional>
+	</define>
+	<define name="number-minutes">
+		<element name="number:minutes">
+			<ref name="number-minutes-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="number-minutes-attlist">
+		<optional>
+			<attribute name="number:style">
+				<choice>
+					<value>short</value>
+					<value>long</value>
+				</choice>
+			</attribute>
+		</optional>
+	</define>
+	<define name="number-seconds">
+		<element name="number:seconds">
+			<ref name="number-seconds-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="number-seconds-attlist">
+		<interleave>
+			<optional>
+				<attribute name="number:style">
+					<choice>
+						<value>short</value>
+						<value>long</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="number:decimal-places">
+					<ref name="integer"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="number-am-pm">
+		<element name="number:am-pm">
+			<empty/>
+		</element>
+	</define>
+	<define name="number-boolean-style">
+		<element name="number:boolean-style">
+			<ref name="common-data-style-attlist"/>
+			<optional>
+				<ref name="style-text-properties"/>
+			</optional>
+			<optional>
+				<ref name="number-text"/>
+			</optional>
+			<optional>
+				<ref name="number-boolean"/>
+				<optional>
+					<ref name="number-text"/>
+				</optional>
+			</optional>
+			<zeroOrMore>
+				<ref name="style-map"/>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="number-boolean">
+		<element name="number:boolean">
+			<empty/>
+		</element>
+	</define>
+	<define name="number-text-style">
+		<element name="number:text-style">
+			<ref name="common-data-style-attlist"/>
+			<optional>
+				<ref name="style-text-properties"/>
+			</optional>
+			<optional>
+				<ref name="number-text"/>
+			</optional>
+			<zeroOrMore>
+				<ref name="number-text-content"/>
+				<optional>
+					<ref name="number-text"/>
+				</optional>
+			</zeroOrMore>
+			<zeroOrMore>
+				<ref name="style-map"/>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="number-text">
+		<element name="number:text">
+			<text/>
+		</element>
+	</define>
+	<define name="number-text-content">
+		<element name="number:text-content">
+			<empty/>
+		</element>
+	</define>
+	<define name="common-data-style-attlist">
+		<interleave>
+			<attribute name="style:name">
+				<ref name="styleName"/>
+			</attribute>
+			<optional>
+				<attribute name="style:display-name">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="number:language">
+					<ref name="languageCode"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="number:country">
+					<ref name="countryCode"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="number:script">
+					<ref name="scriptCode"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="number:rfc-language-tag">
+					<ref name="language"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="number:title">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:volatile">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="number:transliteration-format">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="number:transliteration-language">
+					<ref name="countryCode"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="number:transliteration-country">
+					<ref name="countryCode"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="number:transliteration-style">
+					<choice>
+						<value>short</value>
+						<value>medium</value>
+						<value>long</value>
+					</choice>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="common-auto-reorder-attlist">
+		<optional>
+			<attribute name="number:automatic-order">
+				<ref name="boolean"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-format-source-attlist">
+		<optional>
+			<attribute name="number:format-source">
+				<choice>
+					<value>fixed</value>
+					<value>language</value>
+				</choice>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-decimal-places-attlist">
+		<optional>
+			<attribute name="number:decimal-places">
+				<ref name="integer"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-number-attlist">
+		<interleave>
+			<optional>
+				<attribute name="number:min-integer-digits">
+					<ref name="integer"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="number:grouping">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="common-calendar-attlist">
+		<optional>
+			<attribute name="number:calendar">
+				<choice>
+					<value>gregorian</value>
+					<value>gengou</value>
+					<value>ROC</value>
+					<value>hanja_yoil</value>
+					<value>hanja</value>
+					<value>hijri</value>
+					<value>jewish</value>
+					<value>buddhist</value>
+					<ref name="string"/>
+				</choice>
+			</attribute>
+		</optional>
+	</define>
+	<define name="style-style-content">
+		<choice>
+			<group>
+				<attribute name="style:family">
+					<value>text</value>
+				</attribute>
+				<optional>
+					<ref name="style-text-properties"/>
+				</optional>
+			</group>
+			<group>
+				<attribute name="style:family">
+					<value>paragraph</value>
+				</attribute>
+				<optional>
+					<ref name="style-paragraph-properties"/>
+				</optional>
+				<optional>
+					<ref name="style-text-properties"/>
+				</optional>
+			</group>
+			<group>
+				<attribute name="style:family">
+					<value>section</value>
+				</attribute>
+				<optional>
+					<ref name="style-section-properties"/>
+				</optional>
+			</group>
+			<group>
+				<attribute name="style:family">
+					<value>ruby</value>
+				</attribute>
+				<optional>
+					<ref name="style-ruby-properties"/>
+				</optional>
+			</group>
+			<group>
+				<attribute name="style:family">
+					<value>table</value>
+				</attribute>
+				<optional>
+					<ref name="style-table-properties"/>
+				</optional>
+			</group>
+			<group>
+				<attribute name="style:family">
+					<value>table-column</value>
+				</attribute>
+				<optional>
+					<ref name="style-table-column-properties"/>
+				</optional>
+			</group>
+			<group>
+				<attribute name="style:family">
+					<value>table-row</value>
+				</attribute>
+				<optional>
+					<ref name="style-table-row-properties"/>
+				</optional>
+			</group>
+			<group>
+				<attribute name="style:family">
+					<value>table-cell</value>
+				</attribute>
+				<optional>
+					<ref name="style-table-cell-properties"/>
+				</optional>
+				<optional>
+					<ref name="style-paragraph-properties"/>
+				</optional>
+				<optional>
+					<ref name="style-text-properties"/>
+				</optional>
+			</group>
+			<group>
+				<attribute name="style:family">
+					<choice>
+						<value>graphic</value>
+						<value>presentation</value>
+					</choice>
+				</attribute>
+				<optional>
+					<ref name="style-graphic-properties"/>
+				</optional>
+				<optional>
+					<ref name="style-paragraph-properties"/>
+				</optional>
+				<optional>
+					<ref name="style-text-properties"/>
+				</optional>
+			</group>
+			<group>
+				<attribute name="style:family">
+					<value>drawing-page</value>
+				</attribute>
+				<optional>
+					<ref name="style-drawing-page-properties"/>
+				</optional>
+			</group>
+			<group>
+				<attribute name="style:family">
+					<value>chart</value>
+				</attribute>
+				<optional>
+					<ref name="style-chart-properties"/>
+				</optional>
+				<optional>
+					<ref name="style-graphic-properties"/>
+				</optional>
+				<optional>
+					<ref name="style-paragraph-properties"/>
+				</optional>
+				<optional>
+					<ref name="style-text-properties"/>
+				</optional>
+			</group>
+		</choice>
+	</define>
+	<define name="text-linenumbering-configuration">
+		<element name="text:linenumbering-configuration">
+			<ref name="text-linenumbering-configuration-attlist"/>
+			<optional>
+				<ref name="text-linenumbering-separator"/>
+			</optional>
+		</element>
+	</define>
+	<define name="text-linenumbering-configuration-attlist">
+		<interleave>
+			<optional>
+				<attribute name="text:number-lines">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<ref name="common-num-format-attlist"/>
+			</optional>
+			<optional>
+				<attribute name="text:style-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:increment">
+					<ref name="nonNegativeInteger"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:number-position">
+					<choice>
+						<value>left</value>
+						<value>right</value>
+						<value>inner</value>
+						<value>outer</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:offset">
+					<ref name="nonNegativeLength"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:count-empty-lines">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:count-in-text-boxes">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:restart-on-page">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="text-linenumbering-separator">
+		<element name="text:linenumbering-separator">
+			<optional>
+				<attribute name="text:increment">
+					<ref name="nonNegativeInteger"/>
+				</attribute>
+			</optional>
+			<text/>
+		</element>
+	</define>
+	<define name="text-notes-configuration">
+		<element name="text:notes-configuration">
+			<ref name="text-notes-configuration-content"/>
+		</element>
+	</define>
+	<define name="text-notes-configuration-content">
+		<interleave>
+			<ref name="text-note-class"/>
+			<optional>
+				<attribute name="text:citation-style-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:citation-body-style-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:default-style-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:master-page-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:start-value">
+					<ref name="nonNegativeInteger"/>
+				</attribute>
+			</optional>
+			<ref name="common-num-format-prefix-suffix-attlist"/>
+			<optional>
+				<ref name="common-num-format-attlist"/>
+			</optional>
+			<optional>
+				<attribute name="text:start-numbering-at">
+					<choice>
+						<value>document</value>
+						<value>chapter</value>
+						<value>page</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:footnotes-position">
+					<choice>
+						<value>text</value>
+						<value>page</value>
+						<value>section</value>
+						<value>document</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<element name="text:note-continuation-notice-forward">
+					<text/>
+				</element>
+			</optional>
+			<optional>
+				<element name="text:note-continuation-notice-backward">
+					<text/>
+				</element>
+			</optional>
+		</interleave>
+	</define>
+	<define name="text-bibliography-configuration">
+		<element name="text:bibliography-configuration">
+			<ref name="text-bibliography-configuration-attlist"/>
+			<zeroOrMore>
+				<ref name="text-sort-key"/>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="text-bibliography-configuration-attlist">
+		<interleave>
+			<optional>
+				<attribute name="text:prefix">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:suffix">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:numbered-entries">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:sort-by-position">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="fo:language">
+					<ref name="languageCode"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="fo:country">
+					<ref name="countryCode"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="fo:script">
+					<ref name="scriptCode"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:rfc-language-tag">
+					<ref name="language"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:sort-algorithm">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="text-sort-key">
+		<element name="text:sort-key">
+			<ref name="text-sort-key-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="text-sort-key-attlist">
+		<attribute name="text:key">
+			<choice>
+				<value>address</value>
+				<value>annote</value>
+				<value>author</value>
+				<value>bibliography-type</value>
+				<value>booktitle</value>
+				<value>chapter</value>
+				<value>custom1</value>
+				<value>custom2</value>
+				<value>custom3</value>
+				<value>custom4</value>
+				<value>custom5</value>
+				<value>edition</value>
+				<value>editor</value>
+				<value>howpublished</value>
+				<value>identifier</value>
+				<value>institution</value>
+				<value>isbn</value>
+				<value>issn</value>
+				<value>journal</value>
+				<value>month</value>
+				<value>note</value>
+				<value>number</value>
+				<value>organizations</value>
+				<value>pages</value>
+				<value>publisher</value>
+				<value>report-type</value>
+				<value>school</value>
+				<value>series</value>
+				<value>title</value>
+				<value>url</value>
+				<value>volume</value>
+				<value>year</value>
+			</choice>
+		</attribute>
+		<optional>
+			<attribute name="text:sort-ascending">
+				<ref name="boolean"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="text-list-style">
+		<element name="text:list-style">
+			<ref name="text-list-style-attr"/>
+			<zeroOrMore>
+				<ref name="text-list-style-content"/>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="text-list-style-attr">
+		<interleave>
+			<attribute name="style:name">
+				<ref name="styleName"/>
+			</attribute>
+			<optional>
+				<attribute name="style:display-name">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:consecutive-numbering">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="text-list-style-content">
+		<choice>
+			<element name="text:list-level-style-number">
+				<ref name="text-list-level-style-attr"/>
+				<ref name="text-list-level-style-number-attr"/>
+				<optional>
+					<ref name="style-list-level-properties"/>
+				</optional>
+				<optional>
+					<ref name="style-text-properties"/>
+				</optional>
+			</element>
+			<element name="text:list-level-style-bullet">
+				<ref name="text-list-level-style-attr"/>
+				<ref name="text-list-level-style-bullet-attr"/>
+				<optional>
+					<ref name="style-list-level-properties"/>
+				</optional>
+				<optional>
+					<ref name="style-text-properties"/>
+				</optional>
+			</element>
+			<element name="text:list-level-style-image">
+				<ref name="text-list-level-style-attr"/>
+				<ref name="text-list-level-style-image-attr"/>
+				<optional>
+					<ref name="style-list-level-properties"/>
+				</optional>
+			</element>
+		</choice>
+	</define>
+	<define name="text-list-level-style-number-attr">
+		<interleave>
+			<optional>
+				<attribute name="text:style-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+			<ref name="common-num-format-attlist"/>
+			<ref name="common-num-format-prefix-suffix-attlist"/>
+			<optional>
+				<attribute name="text:display-levels">
+					<ref name="positiveInteger"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:start-value">
+					<ref name="positiveInteger"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="text-list-level-style-bullet-attr">
+		<interleave>
+			<optional>
+				<attribute name="text:style-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+			<attribute name="text:bullet-char">
+				<ref name="character"/>
+			</attribute>
+			<ref name="common-num-format-prefix-suffix-attlist"/>
+			<optional>
+				<attribute name="text:bullet-relative-size">
+					<ref name="percent"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="text-list-level-style-image-attr">
+		<choice>
+			<ref name="common-draw-data-attlist"/>
+			<ref name="office-binary-data"/>
+		</choice>
+	</define>
+	<define name="text-list-level-style-attr">
+		<attribute name="text:level">
+			<ref name="positiveInteger"/>
+		</attribute>
+	</define>
+	<define name="text-outline-style">
+		<element name="text:outline-style">
+			<ref name="text-outline-style-attr"/>
+			<oneOrMore>
+				<ref name="text-outline-level-style"/>
+			</oneOrMore>
+		</element>
+	</define>
+	<define name="text-outline-style-attr">
+		<attribute name="style:name">
+			<ref name="styleName"/>
+		</attribute>
+	</define>
+	<define name="text-outline-level-style">
+		<element name="text:outline-level-style">
+			<ref name="text-outline-level-style-attlist"/>
+			<optional>
+				<ref name="style-list-level-properties"/>
+			</optional>
+			<optional>
+				<ref name="style-text-properties"/>
+			</optional>
+		</element>
+	</define>
+	<define name="text-outline-level-style-attlist">
+		<interleave>
+			<attribute name="text:level">
+				<ref name="positiveInteger"/>
+			</attribute>
+			<optional>
+				<attribute name="text:style-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+			<ref name="common-num-format-attlist"/>
+			<ref name="common-num-format-prefix-suffix-attlist"/>
+			<optional>
+				<attribute name="text:display-levels">
+					<ref name="positiveInteger"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:start-value">
+					<ref name="positiveInteger"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="style-graphic-properties">
+		<element name="style:graphic-properties">
+			<ref name="style-graphic-properties-content-strict"/>
+		</element>
+	</define>
+	<define name="style-graphic-properties-content-strict">
+		<ref name="style-graphic-properties-attlist"/>
+		<ref name="style-graphic-fill-properties-attlist"/>
+		<ref name="style-graphic-properties-elements"/>
+	</define>
+	<define name="style-drawing-page-properties">
+		<element name="style:drawing-page-properties">
+			<ref name="style-drawing-page-properties-content-strict"/>
+		</element>
+	</define>
+	<define name="style-drawing-page-properties-content-strict">
+		<ref name="style-graphic-fill-properties-attlist"/>
+		<ref name="style-drawing-page-properties-attlist"/>
+		<ref name="style-drawing-page-properties-elements"/>
+	</define>
+	<define name="draw-gradient">
+		<element name="draw:gradient">
+			<ref name="common-draw-gradient-attlist"/>
+			<ref name="draw-gradient-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="common-draw-gradient-attlist">
+		<interleave>
+			<optional>
+				<attribute name="draw:name">
+					<ref name="styleName"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:display-name">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<attribute name="draw:style">
+				<ref name="gradient-style"/>
+			</attribute>
+			<optional>
+				<attribute name="draw:cx">
+					<ref name="percent"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:cy">
+					<ref name="percent"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:angle">
+					<ref name="angle"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:border">
+					<ref name="percent"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="gradient-style">
+		<choice>
+			<value>linear</value>
+			<value>axial</value>
+			<value>radial</value>
+			<value>ellipsoid</value>
+			<value>square</value>
+			<value>rectangular</value>
+		</choice>
+	</define>
+	<define name="draw-gradient-attlist">
+		<interleave>
+			<optional>
+				<attribute name="draw:start-color">
+					<ref name="color"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:end-color">
+					<ref name="color"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:start-intensity">
+					<ref name="zeroToHundredPercent"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:end-intensity">
+					<ref name="zeroToHundredPercent"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="svg-linearGradient">
+		<element name="svg:linearGradient">
+			<ref name="common-svg-gradient-attlist"/>
+			<optional>
+				<attribute name="svg:x1">
+					<choice>
+						<ref name="coordinate"/>
+						<ref name="percent"/>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="svg:y1">
+					<choice>
+						<ref name="coordinate"/>
+						<ref name="percent"/>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="svg:x2">
+					<choice>
+						<ref name="coordinate"/>
+						<ref name="percent"/>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="svg:y2">
+					<choice>
+						<ref name="coordinate"/>
+						<ref name="percent"/>
+					</choice>
+				</attribute>
+			</optional>
+			<zeroOrMore>
+				<ref name="svg-stop"/>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="svg-radialGradient">
+		<element name="svg:radialGradient">
+			<ref name="common-svg-gradient-attlist"/>
+			<optional>
+				<attribute name="svg:cx">
+					<choice>
+						<ref name="coordinate"/>
+						<ref name="percent"/>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="svg:cy">
+					<choice>
+						<ref name="coordinate"/>
+						<ref name="percent"/>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="svg:r">
+					<choice>
+						<ref name="coordinate"/>
+						<ref name="percent"/>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="svg:fx">
+					<choice>
+						<ref name="coordinate"/>
+						<ref name="percent"/>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="svg:fy">
+					<choice>
+						<ref name="coordinate"/>
+						<ref name="percent"/>
+					</choice>
+				</attribute>
+			</optional>
+			<zeroOrMore>
+				<ref name="svg-stop"/>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="svg-stop">
+		<element name="svg:stop">
+			<attribute name="svg:offset">
+				<choice>
+					<ref name="double"/>
+					<ref name="percent"/>
+				</choice>
+			</attribute>
+			<optional>
+				<attribute name="svg:stop-color">
+					<ref name="color"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="svg:stop-opacity">
+					<ref name="double"/>
+				</attribute>
+			</optional>
+		</element>
+	</define>
+	<define name="common-svg-gradient-attlist">
+		<interleave>
+			<optional>
+				<attribute name="svg:gradientUnits">
+					<value>objectBoundingBox</value>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="svg:gradientTransform">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="svg:spreadMethod">
+					<choice>
+						<value>pad</value>
+						<value>reflect</value>
+						<value>repeat</value>
+					</choice>
+				</attribute>
+			</optional>
+			<attribute name="draw:name">
+				<ref name="styleName"/>
+			</attribute>
+			<optional>
+				<attribute name="draw:display-name">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="draw-hatch">
+		<element name="draw:hatch">
+			<ref name="draw-hatch-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="draw-hatch-attlist">
+		<interleave>
+			<attribute name="draw:name">
+				<ref name="styleName"/>
+			</attribute>
+			<optional>
+				<attribute name="draw:display-name">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<attribute name="draw:style">
+				<choice>
+					<value>single</value>
+					<value>double</value>
+					<value>triple</value>
+				</choice>
+			</attribute>
+			<optional>
+				<attribute name="draw:color">
+					<ref name="color"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:distance">
+					<ref name="length"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:rotation">
+					<ref name="angle"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="draw-fill-image">
+		<element name="draw:fill-image">
+			<ref name="draw-fill-image-attlist"/>
+			<attribute name="xlink:type">
+				<value>simple</value>
+			</attribute>
+			<attribute name="xlink:href">
+				<ref name="anyIRI"/>
+			</attribute>
+			<optional>
+				<attribute name="xlink:show">
+					<value>embed</value>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="xlink:actuate">
+					<value>onLoad</value>
+				</attribute>
+			</optional>
+			<empty/>
+		</element>
+	</define>
+	<define name="draw-fill-image-attlist">
+		<interleave>
+			<attribute name="draw:name">
+				<ref name="styleName"/>
+			</attribute>
+			<optional>
+				<attribute name="draw:display-name">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="svg:width">
+					<ref name="length"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="svg:height">
+					<ref name="length"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="draw-opacity">
+		<element name="draw:opacity">
+			<ref name="common-draw-gradient-attlist"/>
+			<ref name="draw-opacity-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="draw-opacity-attlist">
+		<optional>
+			<attribute name="draw:start">
+				<ref name="zeroToHundredPercent"/>
+			</attribute>
+		</optional>
+		<optional>
+			<attribute name="draw:end">
+				<ref name="zeroToHundredPercent"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="draw-marker">
+		<element name="draw:marker">
+			<ref name="draw-marker-attlist"/>
+			<ref name="common-draw-viewbox-attlist"/>
+			<ref name="common-draw-path-data-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="draw-marker-attlist">
+		<interleave>
+			<attribute name="draw:name">
+				<ref name="styleName"/>
+			</attribute>
+			<optional>
+				<attribute name="draw:display-name">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="draw-stroke-dash">
+		<element name="draw:stroke-dash">
+			<ref name="draw-stroke-dash-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="draw-stroke-dash-attlist">
+		<interleave>
+			<attribute name="draw:name">
+				<ref name="styleName"/>
+			</attribute>
+			<optional>
+				<attribute name="draw:display-name">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:style">
+					<choice>
+						<value>rect</value>
+						<value>round</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:dots1">
+					<ref name="integer"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:dots1-length">
+					<choice>
+						<ref name="length"/>
+						<ref name="percent"/>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:dots2">
+					<ref name="integer"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:dots2-length">
+					<choice>
+						<ref name="length"/>
+						<ref name="percent"/>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:distance">
+					<choice>
+						<ref name="length"/>
+						<ref name="percent"/>
+					</choice>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="style-presentation-page-layout">
+		<element name="style:presentation-page-layout">
+			<attribute name="style:name">
+				<ref name="styleName"/>
+			</attribute>
+			<optional>
+				<attribute name="style:display-name">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<zeroOrMore>
+				<ref name="presentation-placeholder"/>
+			</zeroOrMore>
+		</element>
+	</define>
+	<define name="presentation-placeholder">
+		<element name="presentation:placeholder">
+			<attribute name="presentation:object">
+				<ref name="presentation-classes"/>
+			</attribute>
+			<attribute name="svg:x">
+				<choice>
+					<ref name="coordinate"/>
+					<ref name="percent"/>
+				</choice>
+			</attribute>
+			<attribute name="svg:y">
+				<choice>
+					<ref name="coordinate"/>
+					<ref name="percent"/>
+				</choice>
+			</attribute>
+			<attribute name="svg:width">
+				<choice>
+					<ref name="length"/>
+					<ref name="percent"/>
+				</choice>
+			</attribute>
+			<attribute name="svg:height">
+				<choice>
+					<ref name="length"/>
+					<ref name="percent"/>
+				</choice>
+			</attribute>
+			<empty/>
+		</element>
+	</define>
+	<define name="style-page-layout-properties">
+		<element name="style:page-layout-properties">
+			<ref name="style-page-layout-properties-content-strict"/>
+		</element>
+	</define>
+	<define name="style-page-layout-properties-content-strict">
+		<ref name="style-page-layout-properties-attlist"/>
+		<ref name="style-page-layout-properties-elements"/>
+	</define>
+	<define name="style-page-layout-properties-attlist">
+		<interleave>
+			<optional>
+				<attribute name="fo:page-width">
+					<ref name="length"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="fo:page-height">
+					<ref name="length"/>
+				</attribute>
+			</optional>
+			<optional>
+				<ref name="common-num-format-attlist"/>
+			</optional>
+			<ref name="common-num-format-prefix-suffix-attlist"/>
+			<optional>
+				<attribute name="style:paper-tray-name">
+					<choice>
+						<value>default</value>
+						<ref name="string"/>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:print-orientation">
+					<choice>
+						<value>portrait</value>
+						<value>landscape</value>
+					</choice>
+				</attribute>
+			</optional>
+			<ref name="common-horizontal-margin-attlist"/>
+			<ref name="common-vertical-margin-attlist"/>
+			<ref name="common-margin-attlist"/>
+			<ref name="common-border-attlist"/>
+			<ref name="common-border-line-width-attlist"/>
+			<ref name="common-padding-attlist"/>
+			<ref name="common-shadow-attlist"/>
+			<ref name="common-background-color-attlist"/>
+			<optional>
+				<attribute name="style:register-truth-ref-style-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:print">
+					<list>
+						<zeroOrMore>
+							<choice>
+								<value>headers</value>
+								<value>grid</value>
+								<value>annotations</value>
+								<value>objects</value>
+								<value>charts</value>
+								<value>drawings</value>
+								<value>formulas</value>
+								<value>zero-values</value>
+							</choice>
+						</zeroOrMore>
+					</list>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:print-page-order">
+					<choice>
+						<value>ttb</value>
+						<value>ltr</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:first-page-number">
+					<choice>
+						<ref name="positiveInteger"/>
+						<value>continue</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:scale-to">
+					<ref name="percent"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:scale-to-pages">
+					<ref name="positiveInteger"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:table-centering">
+					<choice>
+						<value>horizontal</value>
+						<value>vertical</value>
+						<value>both</value>
+						<value>none</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:footnote-max-height">
+					<ref name="length"/>
+				</attribute>
+			</optional>
+			<ref name="common-writing-mode-attlist"/>
+			<optional>
+				<attribute name="style:layout-grid-mode">
+					<choice>
+						<value>none</value>
+						<value>line</value>
+						<value>both</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:layout-grid-standard-mode">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:layout-grid-base-height">
+					<ref name="length"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:layout-grid-ruby-height">
+					<ref name="length"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:layout-grid-lines">
+					<ref name="positiveInteger"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:layout-grid-base-width">
+					<ref name="length"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:layout-grid-color">
+					<ref name="color"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:layout-grid-ruby-below">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:layout-grid-print">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:layout-grid-display">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:layout-grid-snap-to">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="style-page-layout-properties-elements">
+		<interleave>
+			<ref name="style-background-image"/>
+			<ref name="style-columns"/>
+			<ref name="style-footnote-sep"/>
+		</interleave>
+	</define>
+	<define name="style-footnote-sep">
+		<optional>
+			<element name="style:footnote-sep">
+				<ref name="style-footnote-sep-attlist"/>
+				<empty/>
+			</element>
+		</optional>
+	</define>
+	<define name="style-footnote-sep-attlist">
+		<optional>
+			<attribute name="style:width">
+				<ref name="length"/>
+			</attribute>
+		</optional>
+		<optional>
+			<attribute name="style:rel-width">
+				<ref name="percent"/>
+			</attribute>
+		</optional>
+		<optional>
+			<attribute name="style:color">
+				<ref name="color"/>
+			</attribute>
+		</optional>
+		<optional>
+			<attribute name="style:line-style">
+				<ref name="lineStyle"/>
+			</attribute>
+		</optional>
+		<optional>
+			<attribute name="style:adjustment">
+				<choice>
+					<value>left</value>
+					<value>center</value>
+					<value>right</value>
+				</choice>
+			</attribute>
+		</optional>
+		<optional>
+			<attribute name="style:distance-before-sep">
+				<ref name="length"/>
+			</attribute>
+		</optional>
+		<optional>
+			<attribute name="style:distance-after-sep">
+				<ref name="length"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="style-header-footer-properties">
+		<element name="style:header-footer-properties">
+			<ref name="style-header-footer-properties-content-strict"/>
+		</element>
+	</define>
+	<define name="style-header-footer-properties-content-strict">
+		<ref name="style-header-footer-properties-attlist"/>
+		<ref name="style-header-footer-properties-elements"/>
+	</define>
+	<define name="style-header-footer-properties-attlist">
+		<interleave>
+			<optional>
+				<attribute name="svg:height">
+					<ref name="length"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="fo:min-height">
+					<ref name="length"/>
+				</attribute>
+			</optional>
+			<ref name="common-horizontal-margin-attlist"/>
+			<ref name="common-vertical-margin-attlist"/>
+			<ref name="common-margin-attlist"/>
+			<ref name="common-border-attlist"/>
+			<ref name="common-border-line-width-attlist"/>
+			<ref name="common-padding-attlist"/>
+			<ref name="common-background-color-attlist"/>
+			<ref name="common-shadow-attlist"/>
+			<optional>
+				<attribute name="style:dynamic-spacing">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="style-header-footer-properties-elements">
+		<ref name="style-background-image"/>
+	</define>
+	<define name="style-text-properties">
+		<element name="style:text-properties">
+			<ref name="style-text-properties-content-strict"/>
+		</element>
+	</define>
+	<define name="style-text-properties-content-strict">
+		<ref name="style-text-properties-attlist"/>
+		<ref name="style-text-properties-elements"/>
+	</define>
+	<define name="style-text-properties-elements">
+		<empty/>
+	</define>
+	<define name="style-text-properties-attlist">
+		<interleave>
+			<optional>
+				<attribute name="fo:font-variant">
+					<ref name="fontVariant"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="fo:text-transform">
+					<choice>
+						<value>none</value>
+						<value>lowercase</value>
+						<value>uppercase</value>
+						<value>capitalize</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="fo:color">
+					<ref name="color"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:use-window-font-color">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:text-outline">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:text-line-through-type">
+					<ref name="lineType"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:text-line-through-style">
+					<ref name="lineStyle"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:text-line-through-width">
+					<ref name="lineWidth"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:text-line-through-color">
+					<choice>
+						<value>font-color</value>
+						<ref name="color"/>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:text-line-through-text">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:text-line-through-text-style">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:text-position">
+					<list>
+						<choice>
+							<ref name="percent"/>
+							<value>super</value>
+							<value>sub</value>
+						</choice>
+						<optional>
+							<ref name="percent"/>
+						</optional>
+					</list>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:font-name">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:font-name-asian">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:font-name-complex">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="fo:font-family">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:font-family-asian">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:font-family-complex">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:font-family-generic">
+					<ref name="fontFamilyGeneric"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:font-family-generic-asian">
+					<ref name="fontFamilyGeneric"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:font-family-generic-complex">
+					<ref name="fontFamilyGeneric"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:font-style-name">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:font-style-name-asian">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:font-style-name-complex">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:font-pitch">
+					<ref name="fontPitch"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:font-pitch-asian">
+					<ref name="fontPitch"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:font-pitch-complex">
+					<ref name="fontPitch"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:font-charset">
+					<ref name="textEncoding"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:font-charset-asian">
+					<ref name="textEncoding"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:font-charset-complex">
+					<ref name="textEncoding"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="fo:font-size">
+					<choice>
+						<ref name="positiveLength"/>
+						<ref name="percent"/>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:font-size-asian">
+					<choice>
+						<ref name="positiveLength"/>
+						<ref name="percent"/>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:font-size-complex">
+					<choice>
+						<ref name="positiveLength"/>
+						<ref name="percent"/>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:font-size-rel">
+					<ref name="length"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:font-size-rel-asian">
+					<ref name="length"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:font-size-rel-complex">
+					<ref name="length"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:script-type">
+					<choice>
+						<value>latin</value>
+						<value>asian</value>
+						<value>complex</value>
+						<value>ignore</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="fo:letter-spacing">
+					<choice>
+						<ref name="length"/>
+						<value>normal</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="fo:language">
+					<ref name="languageCode"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:language-asian">
+					<ref name="languageCode"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:language-complex">
+					<ref name="languageCode"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="fo:country">
+					<ref name="countryCode"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:country-asian">
+					<ref name="countryCode"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:country-complex">
+					<ref name="countryCode"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="fo:script">
+					<ref name="scriptCode"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:script-asian">
+					<ref name="scriptCode"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:script-complex">
+					<ref name="scriptCode"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:rfc-language-tag">
+					<ref name="language"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:rfc-language-tag-asian">
+					<ref name="language"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:rfc-language-tag-complex">
+					<ref name="language"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="fo:font-style">
+					<ref name="fontStyle"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:font-style-asian">
+					<ref name="fontStyle"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:font-style-complex">
+					<ref name="fontStyle"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:font-relief">
+					<choice>
+						<value>none</value>
+						<value>embossed</value>
+						<value>engraved</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="fo:text-shadow">
+					<ref name="shadowType"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:text-underline-type">
+					<ref name="lineType"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:text-underline-style">
+					<ref name="lineStyle"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:text-underline-width">
+					<ref name="lineWidth"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:text-underline-color">
+					<choice>
+						<value>font-color</value>
+						<ref name="color"/>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:text-overline-type">
+					<ref name="lineType"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:text-overline-style">
+					<ref name="lineStyle"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:text-overline-width">
+					<ref name="lineWidth"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:text-overline-color">
+					<choice>
+						<value>font-color</value>
+						<ref name="color"/>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:text-overline-mode">
+					<ref name="lineMode"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="fo:font-weight">
+					<ref name="fontWeight"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:font-weight-asian">
+					<ref name="fontWeight"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:font-weight-complex">
+					<ref name="fontWeight"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:text-underline-mode">
+					<ref name="lineMode"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:text-line-through-mode">
+					<ref name="lineMode"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:letter-kerning">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:text-blinking">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<ref name="common-background-color-attlist"/>
+			<optional>
+				<attribute name="style:text-combine">
+					<choice>
+						<value>none</value>
+						<value>letters</value>
+						<value>lines</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:text-combine-start-char">
+					<ref name="character"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:text-combine-end-char">
+					<ref name="character"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:text-emphasize">
+					<choice>
+						<value>none</value>
+						<list>
+							<choice>
+								<value>none</value>
+								<value>accent</value>
+								<value>dot</value>
+								<value>circle</value>
+								<value>disc</value>
+							</choice>
+							<choice>
+								<value>above</value>
+								<value>below</value>
+							</choice>
+						</list>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:text-scale">
+					<ref name="percent"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:text-rotation-angle">
+					<ref name="angle"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:text-rotation-scale">
+					<choice>
+						<value>fixed</value>
+						<value>line-height</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="fo:hyphenate">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="fo:hyphenation-remain-char-count">
+					<ref name="positiveInteger"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="fo:hyphenation-push-char-count">
+					<ref name="positiveInteger"/>
+				</attribute>
+			</optional>
+			<choice>
+				<attribute name="text:display">
+					<value>true</value>
+				</attribute>
+				<attribute name="text:display">
+					<value>none</value>
+				</attribute>
+				<group>
+					<attribute name="text:display">
+						<value>condition</value>
+					</attribute>
+					<attribute name="text:condition">
+						<value>none</value>
+					</attribute>
+				</group>
+				<empty/>
+			</choice>
+		</interleave>
+	</define>
+	<define name="fontVariant">
+		<choice>
+			<value>normal</value>
+			<value>small-caps</value>
+		</choice>
+	</define>
+	<define name="fontFamilyGeneric">
+		<choice>
+			<value>roman</value>
+			<value>swiss</value>
+			<value>modern</value>
+			<value>decorative</value>
+			<value>script</value>
+			<value>system</value>
+		</choice>
+	</define>
+	<define name="fontPitch">
+		<choice>
+			<value>fixed</value>
+			<value>variable</value>
+		</choice>
+	</define>
+	<define name="textEncoding">
+		<data type="string">
+			<param name="pattern">[A-Za-z][A-Za-z0-9._\-]*</param>
+		</data>
+	</define>
+	<define name="fontStyle">
+		<choice>
+			<value>normal</value>
+			<value>italic</value>
+			<value>oblique</value>
+		</choice>
+	</define>
+	<define name="shadowType">
+		<choice>
+			<value>none</value>
+			<ref name="string"/>
+		</choice>
+	</define>
+	<define name="lineType">
+		<choice>
+			<value>none</value>
+			<value>single</value>
+			<value>double</value>
+		</choice>
+	</define>
+	<define name="lineStyle">
+		<choice>
+			<value>none</value>
+			<value>solid</value>
+			<value>dotted</value>
+			<value>dash</value>
+			<value>long-dash</value>
+			<value>dot-dash</value>
+			<value>dot-dot-dash</value>
+			<value>wave</value>
+		</choice>
+	</define>
+	<define name="lineWidth">
+		<choice>
+			<value>auto</value>
+			<value>normal</value>
+			<value>bold</value>
+			<value>thin</value>
+			<value>medium</value>
+			<value>thick</value>
+			<ref name="positiveInteger"/>
+			<ref name="percent"/>
+			<ref name="positiveLength"/>
+		</choice>
+	</define>
+	<define name="fontWeight">
+		<choice>
+			<value>normal</value>
+			<value>bold</value>
+			<value>100</value>
+			<value>200</value>
+			<value>300</value>
+			<value>400</value>
+			<value>500</value>
+			<value>600</value>
+			<value>700</value>
+			<value>800</value>
+			<value>900</value>
+		</choice>
+	</define>
+	<define name="lineMode">
+		<choice>
+			<value>continuous</value>
+			<value>skip-white-space</value>
+		</choice>
+	</define>
+	<define name="style-paragraph-properties">
+		<element name="style:paragraph-properties">
+			<ref name="style-paragraph-properties-content-strict"/>
+		</element>
+	</define>
+	<define name="style-paragraph-properties-content-strict">
+		<ref name="style-paragraph-properties-attlist"/>
+		<ref name="style-paragraph-properties-elements"/>
+	</define>
+	<define name="style-paragraph-properties-attlist">
+		<interleave>
+			<optional>
+				<attribute name="fo:line-height">
+					<choice>
+						<value>normal</value>
+						<ref name="nonNegativeLength"/>
+						<ref name="percent"/>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:line-height-at-least">
+					<ref name="nonNegativeLength"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:line-spacing">
+					<ref name="length"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:font-independent-line-spacing">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<ref name="common-text-align"/>
+			<optional>
+				<attribute name="fo:text-align-last">
+					<choice>
+						<value>start</value>
+						<value>center</value>
+						<value>justify</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:justify-single-word">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="fo:keep-together">
+					<choice>
+						<value>auto</value>
+						<value>always</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="fo:widows">
+					<ref name="nonNegativeInteger"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="fo:orphans">
+					<ref name="nonNegativeInteger"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:tab-stop-distance">
+					<ref name="nonNegativeLength"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="fo:hyphenation-keep">
+					<choice>
+						<value>auto</value>
+						<value>page</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="fo:hyphenation-ladder-count">
+					<choice>
+						<value>no-limit</value>
+						<ref name="positiveInteger"/>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:register-true">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+	
+			<ref name="common-horizontal-margin-attlist"/>
+			<optional>
+				<attribute name="fo:text-indent">
+					<choice>
+						<ref name="length"/>
+						<ref name="percent"/>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:auto-text-indent">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<ref name="common-vertical-margin-attlist"/>
+			<ref name="common-margin-attlist"/>
+			<ref name="common-break-attlist"/>
+			<ref name="common-background-color-attlist"/>
+			<ref name="common-border-attlist"/>
+			<ref name="common-border-line-width-attlist"/>
+			<optional>
+				<attribute name="style:join-border">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<ref name="common-padding-attlist"/>
+			<ref name="common-shadow-attlist"/>
+			<ref name="common-keep-with-next-attlist"/>
+			<optional>
+				<attribute name="text:number-lines">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:line-number">
+					<ref name="nonNegativeInteger"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:text-autospace">
+					<choice>
+						<value>none</value>
+						<value>ideograph-alpha</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:punctuation-wrap">
+					<choice>
+						<value>simple</value>
+						<value>hanging</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:line-break">
+					<choice>
+						<value>normal</value>
+						<value>strict</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:vertical-align">
+					<choice>
+						<value>top</value>
+						<value>middle</value>
+						<value>bottom</value>
+						<value>auto</value>
+						<value>baseline</value>
+					</choice>
+				</attribute>
+			</optional>
+			<ref name="common-writing-mode-attlist"/>
+			<optional>
+				<attribute name="style:writing-mode-automatic">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:snap-to-layout-grid">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<ref name="common-page-number-attlist"/>
+			<ref name="common-background-transparency-attlist"/>
+		</interleave>
+	</define>
+	<define name="common-text-align">
+		<optional>
+			<attribute name="fo:text-align">
+				<choice>
+					<value>start</value>
+					<value>end</value>
+					<value>left</value>
+					<value>right</value>
+					<value>center</value>
+					<value>justify</value>
+				</choice>
+			</attribute>
+		</optional>
+	</define>
+	<define name="style-paragraph-properties-elements">
+		<interleave>
+			<ref name="style-tab-stops"/>
+			<ref name="style-drop-cap"/>
+			<ref name="style-background-image"/>
+		</interleave>
+	</define>
+	<define name="style-tab-stops">
+		<optional>
+			<element name="style:tab-stops">
+				<zeroOrMore>
+					<ref name="style-tab-stop"/>
+				</zeroOrMore>
+			</element>
+		</optional>
+	</define>
+	<define name="style-tab-stop">
+		<element name="style:tab-stop">
+			<ref name="style-tab-stop-attlist"/>
+			<empty/>
+		</element>
+	</define>
+	<define name="style-tab-stop-attlist">
+		<interleave>
+			<attribute name="style:position">
+				<ref name="length"/>
+			</attribute>
+			<choice>
+				<optional>
+					<attribute name="style:type">
+						<choice>
+							<value>left</value>
+							<value>center</value>
+							<value>right</value>
+						</choice>
+					</attribute>
+				</optional>
+				<group>
+					<attribute name="style:type">
+						<value>char</value>
+					</attribute>
+					<ref name="style-tab-stop-char-attlist"/>
+				</group>
+			</choice>
+			<optional>
+				<attribute name="style:leader-type">
+					<ref name="lineType"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:leader-style">
+					<ref name="lineStyle"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:leader-width">
+					<ref name="lineWidth"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:leader-color">
+					<choice>
+						<value>font-color</value>
+						<ref name="color"/>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:leader-text">
+					<ref name="character"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:leader-text-style">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="style-tab-stop-char-attlist">
+		<attribute name="style:char">
+			<ref name="character"/>
+		</attribute>
+	</define>
+	<define name="style-drop-cap">
+		<optional>
+			<element name="style:drop-cap">
+				<ref name="style-drop-cap-attlist"/>
+				<empty/>
+			</element>
+		</optional>
+	</define>
+	<define name="style-drop-cap-attlist">
+		<interleave>
+			<optional>
+				<attribute name="style:length">
+					<choice>
+						<value>word</value>
+						<ref name="positiveInteger"/>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:lines">
+					<ref name="positiveInteger"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:distance">
+					<ref name="length"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:style-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="common-horizontal-margin-attlist">
+		<optional>
+			<attribute name="fo:margin-left">
+				<choice>
+					<ref name="length"/>
+					<ref name="percent"/>
+				</choice>
+			</attribute>
+		</optional>
+		<optional>
+			<attribute name="fo:margin-right">
+				<choice>
+					<ref name="length"/>
+					<ref name="percent"/>
+				</choice>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-vertical-margin-attlist">
+		<optional>
+			<attribute name="fo:margin-top">
+				<choice>
+					<ref name="nonNegativeLength"/>
+					<ref name="percent"/>
+				</choice>
+			</attribute>
+		</optional>
+		<optional>
+			<attribute name="fo:margin-bottom">
+				<choice>
+					<ref name="nonNegativeLength"/>
+					<ref name="percent"/>
+				</choice>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-margin-attlist">
+		<optional>
+			<attribute name="fo:margin">
+				<choice>
+					<ref name="nonNegativeLength"/>
+					<ref name="percent"/>
+				</choice>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-break-attlist">
+		<optional>
+			<attribute name="fo:break-before">
+				<choice>
+					<value>auto</value>
+					<value>column</value>
+					<value>page</value>
+				</choice>
+			</attribute>
+		</optional>
+		<optional>
+			<attribute name="fo:break-after">
+				<choice>
+					<value>auto</value>
+					<value>column</value>
+					<value>page</value>
+				</choice>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-background-color-attlist">
+		<optional>
+			<attribute name="fo:background-color">
+				<choice>
+					<value>transparent</value>
+					<ref name="color"/>
+				</choice>
+			</attribute>
+		</optional>
+	</define>
+	<define name="style-background-image">
+		<optional>
+			<element name="style:background-image">
+				<ref name="style-background-image-attlist"/>
+				<choice>
+					<ref name="common-draw-data-attlist"/>
+					<ref name="office-binary-data"/>
+					<empty/>
+				</choice>
+			</element>
+		</optional>
+	</define>
+	<define name="style-background-image-attlist">
+		<interleave>
+			<optional>
+				<attribute name="style:repeat">
+					<choice>
+						<value>no-repeat</value>
+						<value>repeat</value>
+						<value>stretch</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:position">
+					<choice>
+						<value>left</value>
+						<value>center</value>
+						<value>right</value>
+						<value>top</value>
+						<value>bottom</value>
+						<list>
+							<ref name="horiBackPos"/>
+							<ref name="vertBackPos"/>
+						</list>
+						<list>
+							<ref name="vertBackPos"/>
+							<ref name="horiBackPos"/>
+						</list>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:filter-name">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:opacity">
+					<ref name="zeroToHundredPercent"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="horiBackPos">
+		<choice>
+			<value>left</value>
+			<value>center</value>
+			<value>right</value>
+		</choice>
+	</define>
+	<define name="vertBackPos">
+		<choice>
+			<value>top</value>
+			<value>center</value>
+			<value>bottom</value>
+		</choice>
+	</define>
+	<define name="common-border-attlist">
+		<optional>
+			<attribute name="fo:border">
+				<ref name="string"/>
+			</attribute>
+		</optional>
+		<optional>
+			<attribute name="fo:border-top">
+				<ref name="string"/>
+			</attribute>
+		</optional>
+		<optional>
+			<attribute name="fo:border-bottom">
+				<ref name="string"/>
+			</attribute>
+		</optional>
+		<optional>
+			<attribute name="fo:border-left">
+				<ref name="string"/>
+			</attribute>
+		</optional>
+		<optional>
+			<attribute name="fo:border-right">
+				<ref name="string"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-border-line-width-attlist">
+		<optional>
+			<attribute name="style:border-line-width">
+				<ref name="borderWidths"/>
+			</attribute>
+		</optional>
+		<optional>
+			<attribute name="style:border-line-width-top">
+				<ref name="borderWidths"/>
+			</attribute>
+		</optional>
+		<optional>
+			<attribute name="style:border-line-width-bottom">
+				<ref name="borderWidths"/>
+			</attribute>
+		</optional>
+		<optional>
+			<attribute name="style:border-line-width-left">
+				<ref name="borderWidths"/>
+			</attribute>
+		</optional>
+		<optional>
+			<attribute name="style:border-line-width-right">
+				<ref name="borderWidths"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="borderWidths">
+		<list>
+			<ref name="positiveLength"/>
+			<ref name="positiveLength"/>
+			<ref name="positiveLength"/>
+		</list>
+	</define>
+	<define name="common-padding-attlist">
+		<optional>
+			<attribute name="fo:padding">
+				<ref name="nonNegativeLength"/>
+			</attribute>
+		</optional>
+		<optional>
+			<attribute name="fo:padding-top">
+				<ref name="nonNegativeLength"/>
+			</attribute>
+		</optional>
+		<optional>
+			<attribute name="fo:padding-bottom">
+				<ref name="nonNegativeLength"/>
+			</attribute>
+		</optional>
+		<optional>
+			<attribute name="fo:padding-left">
+				<ref name="nonNegativeLength"/>
+			</attribute>
+		</optional>
+		<optional>
+			<attribute name="fo:padding-right">
+				<ref name="nonNegativeLength"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-shadow-attlist">
+		<optional>
+			<attribute name="style:shadow">
+				<ref name="shadowType"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-keep-with-next-attlist">
+		<optional>
+			<attribute name="fo:keep-with-next">
+				<choice>
+					<value>auto</value>
+					<value>always</value>
+				</choice>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-writing-mode-attlist">
+		<optional>
+			<attribute name="style:writing-mode">
+				<choice>
+					<value>lr-tb</value>
+					<value>rl-tb</value>
+					<value>tb-rl</value>
+					<value>tb-lr</value>
+					<value>lr</value>
+					<value>rl</value>
+					<value>tb</value>
+					<value>page</value>
+				</choice>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-page-number-attlist">
+		<optional>
+			<attribute name="style:page-number">
+				<choice>
+					<ref name="positiveInteger"/>
+					<value>auto</value>
+				</choice>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-background-transparency-attlist">
+		<optional>
+			<attribute name="style:background-transparency">
+				<ref name="zeroToHundredPercent"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="style-ruby-properties">
+		<element name="style:ruby-properties">
+			<ref name="style-ruby-properties-content-strict"/>
+		</element>
+	</define>
+	<define name="style-ruby-properties-content-strict">
+		<ref name="style-ruby-properties-attlist"/>
+		<ref name="style-ruby-properties-elements"/>
+	</define>
+	<define name="style-ruby-properties-elements">
+		<empty/>
+	</define>
+	<define name="style-ruby-properties-attlist">
+		<interleave>
+			<optional>
+				<attribute name="style:ruby-position">
+					<choice>
+						<value>above</value>
+						<value>below</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:ruby-align">
+					<choice>
+						<value>left</value>
+						<value>center</value>
+						<value>right</value>
+						<value>distribute-letter</value>
+						<value>distribute-space</value>
+					</choice>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="style-section-properties">
+		<element name="style:section-properties">
+			<ref name="style-section-properties-content-strict"/>
+		</element>
+	</define>
+	<define name="style-section-properties-content-strict">
+		<ref name="style-section-properties-attlist"/>
+		<ref name="style-section-properties-elements"/>
+	</define>
+	<define name="style-section-properties-attlist">
+		<interleave>
+			<ref name="common-background-color-attlist"/>
+			<ref name="common-horizontal-margin-attlist"/>
+			<optional>
+				<attribute name="style:protect">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<ref name="common-editable-attlist"/>
+			<optional>
+				<attribute name="text:dont-balance-text-columns">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<ref name="common-writing-mode-attlist"/>
+		</interleave>
+	</define>
+	<define name="style-section-properties-elements">
+		<interleave>
+			<ref name="style-background-image"/>
+			<ref name="style-columns"/>
+			<zeroOrMore>
+				<ref name="text-notes-configuration"/>
+			</zeroOrMore>
+		</interleave>
+	</define>
+	<define name="style-columns">
+		<optional>
+			<element name="style:columns">
+				<ref name="style-columns-attlist"/>
+				<optional>
+					<ref name="style-column-sep"/>
+				</optional>
+				<zeroOrMore>
+					<ref name="style-column"/>
+				</zeroOrMore>
+			</element>
+		</optional>
+	</define>
+	<define name="style-columns-attlist">
+		<interleave>
+			<attribute name="fo:column-count">
+				<ref name="positiveInteger"/>
+			</attribute>
+			<optional>
+				<attribute name="fo:column-gap">
+					<ref name="length"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="style-column">
+		<element name="style:column">
+			<ref name="style-column-attlist"/>
+		</element>
+	</define>
+	<define name="style-column-attlist">
+		<interleave>
+			<attribute name="style:rel-width">
+				<ref name="relativeLength"/>
+			</attribute>
+			<optional>
+				<attribute name="fo:start-indent">
+					<ref name="length"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="fo:end-indent">
+					<ref name="length"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="fo:space-before">
+					<ref name="length"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="fo:space-after">
+					<ref name="length"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="style-column-sep">
+		<element name="style:column-sep">
+			<ref name="style-column-sep-attlist"/>
+		</element>
+	</define>
+	<define name="style-column-sep-attlist">
+		<interleave>
+			<optional>
+				<attribute name="style:style">
+					<choice>
+						<value>none</value>
+						<value>solid</value>
+						<value>dotted</value>
+						<value>dashed</value>
+						<value>dot-dashed</value>
+					</choice>
+				</attribute>
+			</optional>
+			<attribute name="style:width">
+				<ref name="length"/>
+			</attribute>
+			<optional>
+				<attribute name="style:height">
+					<ref name="zeroToHundredPercent"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:vertical-align">
+					<choice>
+						<value>top</value>
+						<value>middle</value>
+						<value>bottom</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:color">
+					<ref name="color"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="style-table-properties">
+		<element name="style:table-properties">
+			<ref name="style-table-properties-content-strict"/>
+		</element>
+	</define>
+	<define name="style-table-properties-content-strict">
+		<ref name="style-table-properties-attlist"/>
+		<ref name="style-table-properties-elements"/>
+	</define>
+	<define name="style-table-properties-attlist">
+		<interleave>
+			<optional>
+				<attribute name="style:width">
+					<ref name="positiveLength"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:rel-width">
+					<ref name="percent"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:align">
+					<choice>
+						<value>left</value>
+						<value>center</value>
+						<value>right</value>
+						<value>margins</value>
+					</choice>
+				</attribute>
+			</optional>
+			<ref name="common-horizontal-margin-attlist"/>
+			<ref name="common-vertical-margin-attlist"/>
+			<ref name="common-margin-attlist"/>
+			<ref name="common-page-number-attlist"/>
+			<ref name="common-break-attlist"/>
+			<ref name="common-background-color-attlist"/>
+			<ref name="common-shadow-attlist"/>
+			<ref name="common-keep-with-next-attlist"/>
+			<optional>
+				<attribute name="style:may-break-between-rows">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="table:border-model">
+					<choice>
+						<value>collapsing</value>
+						<value>separating</value>
+					</choice>
+				</attribute>
+			</optional>
+			<ref name="common-writing-mode-attlist"/>
+			<optional>
+				<attribute name="table:display">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="style-table-properties-elements">
+		<ref name="style-background-image"/>
+	</define>
+	<define name="style-table-column-properties">
+		<element name="style:table-column-properties">
+			<ref name="style-table-column-properties-content-strict"/>
+		</element>
+	</define>
+	<define name="style-table-column-properties-content-strict">
+		<ref name="style-table-column-properties-attlist"/>
+		<ref name="style-table-column-properties-elements"/>
+	</define>
+	<define name="style-table-column-properties-elements">
+		<empty/>
+	</define>
+	<define name="style-table-column-properties-attlist">
+		<interleave>
+			<optional>
+				<attribute name="style:column-width">
+					<ref name="positiveLength"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:rel-column-width">
+					<ref name="relativeLength"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:use-optimal-column-width">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<ref name="common-break-attlist"/>
+		</interleave>
+	</define>
+	<define name="style-table-row-properties">
+		<element name="style:table-row-properties">
+			<ref name="style-table-row-properties-content-strict"/>
+		</element>
+	</define>
+	<define name="style-table-row-properties-content-strict">
+		<ref name="style-table-row-properties-attlist"/>
+		<ref name="style-table-row-properties-elements"/>
+	</define>
+	<define name="style-table-row-properties-attlist">
+		<interleave>
+			<optional>
+				<attribute name="style:row-height">
+					<ref name="positiveLength"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:min-row-height">
+					<ref name="nonNegativeLength"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:use-optimal-row-height">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<ref name="common-background-color-attlist"/>
+			<ref name="common-break-attlist"/>
+			<optional>
+				<attribute name="fo:keep-together">
+					<choice>
+						<value>auto</value>
+						<value>always</value>
+					</choice>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="style-table-row-properties-elements">
+		<ref name="style-background-image"/>
+	</define>
+	<define name="style-table-cell-properties">
+		<element name="style:table-cell-properties">
+			<ref name="style-table-cell-properties-content-strict"/>
+		</element>
+	</define>
+	<define name="style-table-cell-properties-content-strict">
+		<ref name="style-table-cell-properties-attlist"/>
+		<ref name="style-table-cell-properties-elements"/>
+	</define>
+	<define name="style-table-cell-properties-attlist">
+		<interleave>
+			<optional>
+				<attribute name="style:vertical-align">
+					<choice>
+						<value>top</value>
+						<value>middle</value>
+						<value>bottom</value>
+						<value>automatic</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:text-align-source">
+					<choice>
+						<value>fix</value>
+						<value>value-type</value>
+					</choice>
+				</attribute>
+			</optional>
+			<ref name="common-style-direction-attlist"/>
+			<optional>
+				<attribute name="style:glyph-orientation-vertical">
+					<choice>
+						<value>auto</value>
+						<value>0</value>
+						<value>0deg</value>
+						<value>0rad</value>
+						<value>0grad</value>
+					</choice>
+				</attribute>
+			</optional>
+			<ref name="common-writing-mode-attlist"/>
+			<ref name="common-shadow-attlist"/>
+			<ref name="common-background-color-attlist"/>
+			<ref name="common-border-attlist"/>
+			<optional>
+				<attribute name="style:diagonal-tl-br">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:diagonal-tl-br-widths">
+					<ref name="borderWidths"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:diagonal-bl-tr">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:diagonal-bl-tr-widths">
+					<ref name="borderWidths"/>
+				</attribute>
+			</optional>
+			<ref name="common-border-line-width-attlist"/>
+			<ref name="common-padding-attlist"/>
+			<optional>
+				<attribute name="fo:wrap-option">
+					<choice>
+						<value>no-wrap</value>
+						<value>wrap</value>
+					</choice>
+				</attribute>
+			</optional>
+			<ref name="common-rotation-angle-attlist"/>
+			<optional>
+				<attribute name="style:rotation-align">
+					<choice>
+						<value>none</value>
+						<value>bottom</value>
+						<value>top</value>
+						<value>center</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:cell-protect">
+					<choice>
+						<value>none</value>
+						<value>hidden-and-protected</value>
+						<list>
+							<oneOrMore>
+								<choice>
+									<value>protected</value>
+									<value>formula-hidden</value>
+								</choice>
+							</oneOrMore>
+						</list>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:print-content">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:decimal-places">
+					<ref name="nonNegativeInteger"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:repeat-content">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:shrink-to-fit">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="common-style-direction-attlist">
+		<optional>
+			<attribute name="style:direction">
+				<choice>
+					<value>ltr</value>
+					<value>ttb</value>
+				</choice>
+			</attribute>
+		</optional>
+	</define>
+	<define name="style-table-cell-properties-elements">
+		<ref name="style-background-image"/>
+	</define>
+	<define name="common-rotation-angle-attlist">
+		<optional>
+			<attribute name="style:rotation-angle">
+				<ref name="angle"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="style-list-level-properties">
+		<element name="style:list-level-properties">
+			<ref name="style-list-level-properties-content-strict"/>
+		</element>
+	</define>
+	<define name="style-list-level-properties-content-strict">
+		<ref name="style-list-level-properties-attlist"/>
+		<ref name="style-list-level-properties-elements"/>
+	</define>
+	<define name="style-list-level-properties-attlist">
+		<interleave>
+			<ref name="common-text-align"/>
+			<optional>
+				<attribute name="text:space-before">
+					<ref name="length"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:min-label-width">
+					<ref name="nonNegativeLength"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:min-label-distance">
+					<ref name="nonNegativeLength"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:font-name">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="fo:width">
+					<ref name="positiveLength"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="fo:height">
+					<ref name="positiveLength"/>
+				</attribute>
+			</optional>
+			<ref name="common-vertical-rel-attlist"/>
+			<ref name="common-vertical-pos-attlist"/>
+			<optional>
+				<attribute name="text:list-level-position-and-space-mode">
+					<choice>
+						<value>label-width-and-position</value>
+						<value>label-alignment</value>
+					</choice>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="style-list-level-properties-elements">
+		<ref name="style-list-level-label-alignment"/>
+	</define>
+	<define name="style-list-level-label-alignment">
+		<optional>
+			<element name="style:list-level-label-alignment">
+				<ref name="style-list-level-label-alignment-attlist"/>
+				<empty/>
+			</element>
+		</optional>
+	</define>
+	<define name="style-list-level-label-alignment-attlist">
+		<interleave>
+			<attribute name="text:label-followed-by">
+				<choice>
+					<value>listtab</value>
+					<value>space</value>
+					<value>nothing</value>
+				</choice>
+			</attribute>
+			<optional>
+				<attribute name="text:list-tab-stop-position">
+					<ref name="length"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="fo:text-indent">
+					<ref name="length"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="fo:margin-left">
+					<ref name="length"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="style-graphic-properties-attlist">
+		<interleave>
+			<optional>
+				<attribute name="draw:stroke">
+					<choice>
+						<value>none</value>
+						<value>dash</value>
+						<value>solid</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:stroke-dash">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:stroke-dash-names">
+					<ref name="styleNameRefs"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="svg:stroke-width">
+					<ref name="length"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="svg:stroke-color">
+					<ref name="color"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:marker-start">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:marker-end">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:marker-start-width">
+					<ref name="length"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:marker-end-width">
+					<ref name="length"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:marker-start-center">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:marker-end-center">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="svg:stroke-opacity">
+					<choice>
+						<data type="double">
+							<param name="minInclusive">0</param>
+							<param name="maxInclusive">1</param>
+						</data>
+						<ref name="zeroToHundredPercent"/>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:stroke-linejoin">
+					<choice>
+						<value>miter</value>
+						<value>round</value>
+						<value>bevel</value>
+						<value>middle</value>
+						<value>none</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="svg:stroke-linecap">
+					<choice>
+						<value>butt</value>
+						<value>square</value>
+						<value>round</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:symbol-color">
+					<ref name="color"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:animation">
+					<choice>
+						<value>none</value>
+						<value>scroll</value>
+						<value>alternate</value>
+						<value>slide</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:animation-direction">
+					<choice>
+						<value>left</value>
+						<value>right</value>
+						<value>up</value>
+						<value>down</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:animation-start-inside">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:animation-stop-inside">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:animation-repeat">
+					<ref name="nonNegativeInteger"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:animation-delay">
+					<ref name="duration"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:animation-steps">
+					<ref name="length"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:auto-grow-width">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:auto-grow-height">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:fit-to-size">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:fit-to-contour">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:textarea-vertical-align">
+					<choice>
+						<value>top</value>
+						<value>middle</value>
+						<value>bottom</value>
+						<value>justify</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:textarea-horizontal-align">
+					<choice>
+						<value>left</value>
+						<value>center</value>
+						<value>right</value>
+						<value>justify</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="fo:wrap-option">
+					<choice>
+						<value>no-wrap</value>
+						<value>wrap</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:shrink-to-fit">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:color-mode">
+					<choice>
+						<value>greyscale</value>
+						<value>mono</value>
+						<value>watermark</value>
+						<value>standard</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:color-inversion">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:luminance">
+					<ref name="zeroToHundredPercent"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:contrast">
+					<ref name="percent"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:gamma">
+					<ref name="percent"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:red">
+					<ref name="signedZeroToHundredPercent"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:green">
+					<ref name="signedZeroToHundredPercent"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:blue">
+					<ref name="signedZeroToHundredPercent"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:image-opacity">
+					<ref name="zeroToHundredPercent"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:shadow">
+					<choice>
+						<value>visible</value>
+						<value>hidden</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:shadow-offset-x">
+					<ref name="length"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:shadow-offset-y">
+					<ref name="length"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:shadow-color">
+					<ref name="color"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:shadow-opacity">
+					<ref name="zeroToHundredPercent"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:start-line-spacing-horizontal">
+					<ref name="distance"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:start-line-spacing-vertical">
+					<ref name="distance"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:end-line-spacing-horizontal">
+					<ref name="distance"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:end-line-spacing-vertical">
+					<ref name="distance"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:line-distance">
+					<ref name="distance"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:guide-overhang">
+					<ref name="length"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:guide-distance">
+					<ref name="distance"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:start-guide">
+					<ref name="length"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:end-guide">
+					<ref name="length"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:placing">
+					<choice>
+						<value>below</value>
+						<value>above</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:parallel">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:measure-align">
+					<choice>
+						<value>automatic</value>
+						<value>left-outside</value>
+						<value>inside</value>
+						<value>right-outside</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:measure-vertical-align">
+					<choice>
+						<value>automatic</value>
+						<value>above</value>
+						<value>below</value>
+						<value>center</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:unit">
+					<choice>
+						<value>automatic</value>
+						<value>mm</value>
+						<value>cm</value>
+						<value>m</value>
+						<value>km</value>
+						<value>pt</value>
+						<value>pc</value>
+						<value>inch</value>
+						<value>ft</value>
+						<value>mi</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:show-unit">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:decimal-places">
+					<ref name="nonNegativeInteger"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:caption-type">
+					<choice>
+						<value>straight-line</value>
+						<value>angled-line</value>
+						<value>angled-connector-line</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:caption-angle-type">
+					<choice>
+						<value>fixed</value>
+						<value>free</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:caption-angle">
+					<ref name="angle"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:caption-gap">
+					<ref name="distance"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:caption-escape-direction">
+					<choice>
+						<value>horizontal</value>
+						<value>vertical</value>
+						<value>auto</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:caption-escape">
+					<choice>
+						<ref name="length"/>
+						<ref name="percent"/>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:caption-line-length">
+					<ref name="length"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:caption-fit-line-length">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="dr3d:horizontal-segments">
+					<ref name="nonNegativeInteger"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="dr3d:vertical-segments">
+					<ref name="nonNegativeInteger"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="dr3d:edge-rounding">
+					<ref name="percent"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="dr3d:edge-rounding-mode">
+					<choice>
+						<value>correct</value>
+						<value>attractive</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="dr3d:back-scale">
+					<ref name="percent"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="dr3d:depth">
+					<ref name="length"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="dr3d:backface-culling">
+					<choice>
+						<value>enabled</value>
+						<value>disabled</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="dr3d:end-angle">
+					<ref name="angle"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="dr3d:close-front">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="dr3d:close-back">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="dr3d:lighting-mode">
+					<choice>
+						<value>standard</value>
+						<value>double-sided</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="dr3d:normals-kind">
+					<choice>
+						<value>object</value>
+						<value>flat</value>
+						<value>sphere</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="dr3d:normals-direction">
+					<choice>
+						<value>normal</value>
+						<value>inverse</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="dr3d:texture-generation-mode-x">
+					<choice>
+						<value>object</value>
+						<value>parallel</value>
+						<value>sphere</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="dr3d:texture-generation-mode-y">
+					<choice>
+						<value>object</value>
+						<value>parallel</value>
+						<value>sphere</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="dr3d:texture-kind">
+					<choice>
+						<value>luminance</value>
+						<value>intensity</value>
+						<value>color</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="dr3d:texture-filter">
+					<choice>
+						<value>enabled</value>
+						<value>disabled</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="dr3d:texture-mode">
+					<choice>
+						<value>replace</value>
+						<value>modulate</value>
+						<value>blend</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="dr3d:ambient-color">
+					<ref name="color"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="dr3d:emissive-color">
+					<ref name="color"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="dr3d:specular-color">
+					<ref name="color"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="dr3d:diffuse-color">
+					<ref name="color"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="dr3d:shininess">
+					<ref name="percent"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="dr3d:shadow">
+					<choice>
+						<value>visible</value>
+						<value>hidden</value>
+					</choice>
+				</attribute>
+			</optional>
+			<ref name="common-draw-rel-size-attlist"/>
+			<optional>
+				<attribute name="fo:min-width">
+					<choice>
+						<ref name="length"/>
+						<ref name="percent"/>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="fo:min-height">
+					<choice>
+						<ref name="length"/>
+						<ref name="percent"/>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="fo:max-height">
+					<choice>
+						<ref name="length"/>
+						<ref name="percent"/>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="fo:max-width">
+					<choice>
+						<ref name="length"/>
+						<ref name="percent"/>
+					</choice>
+				</attribute>
+			</optional>
+			<ref name="common-horizontal-margin-attlist"/>
+			<ref name="common-vertical-margin-attlist"/>
+			<ref name="common-margin-attlist"/>
+			<optional>
+				<attribute name="style:print-content">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:protect">
+					<choice>
+						<value>none</value>
+						<list>
+							<oneOrMore>
+								<choice>
+									<value>content</value>
+									<value>position</value>
+									<value>size</value>
+								</choice>
+							</oneOrMore>
+						</list>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:horizontal-pos">
+					<choice>
+						<value>left</value>
+						<value>center</value>
+						<value>right</value>
+						<value>from-left</value>
+						<value>inside</value>
+						<value>outside</value>
+						<value>from-inside</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="svg:x">
+					<ref name="coordinate"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:horizontal-rel">
+					<choice>
+						<value>page</value>
+						<value>page-content</value>
+						<value>page-start-margin</value>
+						<value>page-end-margin</value>
+						<value>frame</value>
+						<value>frame-content</value>
+						<value>frame-start-margin</value>
+						<value>frame-end-margin</value>
+						<value>paragraph</value>
+						<value>paragraph-content</value>
+						<value>paragraph-start-margin</value>
+						<value>paragraph-end-margin</value>
+						<value>char</value>
+					</choice>
+				</attribute>
+			</optional>
+			<ref name="common-vertical-pos-attlist"/>
+			<ref name="common-vertical-rel-attlist"/>
+			<ref name="common-text-anchor-attlist"/>
+			<ref name="common-border-attlist"/>
+			<ref name="common-border-line-width-attlist"/>
+			<ref name="common-padding-attlist"/>
+			<ref name="common-shadow-attlist"/>
+			<ref name="common-background-color-attlist"/>
+			<ref name="common-background-transparency-attlist"/>
+			<ref name="common-editable-attlist"/>
+			<optional>
+				<attribute name="style:wrap">
+					<choice>
+						<value>none</value>
+						<value>left</value>
+						<value>right</value>
+						<value>parallel</value>
+						<value>dynamic</value>
+						<value>run-through</value>
+						<value>biggest</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:wrap-dynamic-threshold">
+					<ref name="nonNegativeLength"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:number-wrapped-paragraphs">
+					<choice>
+						<value>no-limit</value>
+						<ref name="positiveInteger"/>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:wrap-contour">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:wrap-contour-mode">
+					<choice>
+						<value>full</value>
+						<value>outside</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:run-through">
+					<choice>
+						<value>foreground</value>
+						<value>background</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:flow-with-text">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:overflow-behavior">
+					<choice>
+						<value>clip</value>
+						<value>auto-create-new-frame</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:mirror">
+					<choice>
+						<value>none</value>
+						<value>vertical</value>
+						<ref name="horizontal-mirror"/>
+						<list>
+							<value>vertical</value>
+							<ref name="horizontal-mirror"/>
+						</list>
+						<list>
+							<ref name="horizontal-mirror"/>
+							<value>vertical</value>
+						</list>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="fo:clip">
+					<choice>
+						<value>auto</value>
+						<ref name="clipShape"/>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:wrap-influence-on-position">
+					<choice>
+						<value>iterative</value>
+						<value>once-concurrent</value>
+						<value>once-successive</value>
+					</choice>
+				</attribute>
+			</optional>
+			<ref name="common-writing-mode-attlist"/>
+			<optional>
+				<attribute name="draw:frame-display-scrollbar">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:frame-display-border">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:frame-margin-horizontal">
+					<ref name="nonNegativePixelLength"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:frame-margin-vertical">
+					<ref name="nonNegativePixelLength"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:visible-area-left">
+					<ref name="nonNegativeLength"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:visible-area-top">
+					<ref name="nonNegativeLength"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:visible-area-width">
+					<ref name="positiveLength"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:visible-area-height">
+					<ref name="positiveLength"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:draw-aspect">
+					<choice>
+						<value>content</value>
+						<value>thumbnail</value>
+						<value>icon</value>
+						<value>print-view</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:ole-draw-aspect">
+					<ref name="nonNegativeInteger"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="style-graphic-fill-properties-attlist">
+		<interleave>
+			<optional>
+				<attribute name="draw:fill">
+					<choice>
+						<value>none</value>
+						<value>solid</value>
+						<value>bitmap</value>
+						<value>gradient</value>
+						<value>hatch</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:fill-color">
+					<ref name="color"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:secondary-fill-color">
+					<ref name="color"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:fill-gradient-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:gradient-step-count">
+					<ref name="nonNegativeInteger"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:fill-hatch-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:fill-hatch-solid">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:fill-image-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="style:repeat">
+					<choice>
+						<value>no-repeat</value>
+						<value>repeat</value>
+						<value>stretch</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:fill-image-width">
+					<choice>
+						<ref name="length"/>
+						<ref name="percent"/>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:fill-image-height">
+					<choice>
+						<ref name="length"/>
+						<ref name="percent"/>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:fill-image-ref-point-x">
+					<ref name="percent"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:fill-image-ref-point-y">
+					<ref name="percent"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:fill-image-ref-point">
+					<choice>
+						<value>top-left</value>
+						<value>top</value>
+						<value>top-right</value>
+						<value>left</value>
+						<value>center</value>
+						<value>right</value>
+						<value>bottom-left</value>
+						<value>bottom</value>
+						<value>bottom-right</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:tile-repeat-offset">
+					<list>
+						<ref name="zeroToHundredPercent"/>
+						<choice>
+							<value>horizontal</value>
+							<value>vertical</value>
+						</choice>
+					</list>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:opacity">
+					<ref name="zeroToHundredPercent"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:opacity-name">
+					<ref name="styleNameRef"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="svg:fill-rule">
+					<choice>
+						<value>nonzero</value>
+						<value>evenodd</value>
+					</choice>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="style-graphic-properties-elements">
+		<interleave>
+			<optional>
+				<ref name="text-list-style"/>
+			</optional>
+			<ref name="style-background-image"/>
+			<ref name="style-columns"/>
+		</interleave>
+	</define>
+	<define name="common-vertical-pos-attlist">
+		<optional>
+			<attribute name="style:vertical-pos">
+				<choice>
+					<value>top</value>
+					<value>middle</value>
+					<value>bottom</value>
+					<value>from-top</value>
+					<value>below</value>
+				</choice>
+			</attribute>
+		</optional>
+		<optional>
+			<attribute name="svg:y">
+				<ref name="coordinate"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-vertical-rel-attlist">
+		<optional>
+			<attribute name="style:vertical-rel">
+				<choice>
+					<value>page</value>
+					<value>page-content</value>
+					<value>frame</value>
+					<value>frame-content</value>
+					<value>paragraph</value>
+					<value>paragraph-content</value>
+					<value>char</value>
+					<value>line</value>
+					<value>baseline</value>
+					<value>text</value>
+				</choice>
+			</attribute>
+		</optional>
+	</define>
+	<define name="common-editable-attlist">
+		<optional>
+			<attribute name="style:editable">
+				<ref name="boolean"/>
+			</attribute>
+		</optional>
+	</define>
+	<define name="horizontal-mirror">
+		<choice>
+			<value>horizontal</value>
+			<value>horizontal-on-odd</value>
+			<value>horizontal-on-even</value>
+		</choice>
+	</define>
+	<define name="clipShape">
+		<data type="string">
+			<param name="pattern">rect\([ ]*((-?([0-9]+(\.[0-9]*)?|\.[0-9]+)((cm)|(mm)|(in)|(pt)|(pc)))|(auto))([ ]*,[ ]*((-?([0-9]+(\.[0-9]*)?|\.[0-9]+)((cm)|(mm)|(in)|(pt)|(pc))))|(auto)){3}[ ]*\)</param>
+		</data>
+	</define>
+	<define name="nonNegativePixelLength">
+		<data type="string">
+			<param name="pattern">([0-9]+(\.[0-9]*)?|\.[0-9]+)(px)</param>
+		</data>
+	</define>
+	<define name="style-chart-properties">
+		<element name="style:chart-properties">
+			<ref name="style-chart-properties-content-strict"/>
+		</element>
+	</define>
+	<define name="style-chart-properties-content-strict">
+		<ref name="style-chart-properties-attlist"/>
+		<ref name="style-chart-properties-elements"/>
+	</define>
+	<define name="style-chart-properties-elements">
+		<empty/>
+	</define>
+	<define name="style-chart-properties-attlist">
+		<interleave>
+			<optional>
+				<attribute name="chart:scale-text">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:three-dimensional">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:deep">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:right-angled-axes">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<choice>
+				<attribute name="chart:symbol-type">
+					<value>none</value>
+				</attribute>
+				<attribute name="chart:symbol-type">
+					<value>automatic</value>
+				</attribute>
+				<group>
+					<attribute name="chart:symbol-type">
+						<value>named-symbol</value>
+					</attribute>
+					<attribute name="chart:symbol-name">
+						<choice>
+							<value>square</value>
+							<value>diamond</value>
+							<value>arrow-down</value>
+							<value>arrow-up</value>
+							<value>arrow-right</value>
+							<value>arrow-left</value>
+							<value>bow-tie</value>
+							<value>hourglass</value>
+							<value>circle</value>
+							<value>star</value>
+							<value>x</value>
+							<value>plus</value>
+							<value>asterisk</value>
+							<value>horizontal-bar</value>
+							<value>vertical-bar</value>
+						</choice>
+					</attribute>
+				</group>
+				<group>
+					<attribute name="chart:symbol-type">
+						<value>image</value>
+					</attribute>
+					<element name="chart:symbol-image">
+						<attribute name="xlink:href">
+							<ref name="anyIRI"/>
+						</attribute>
+					</element>
+				</group>
+				<empty/>
+			</choice>
+			<optional>
+				<attribute name="chart:symbol-width">
+					<ref name="nonNegativeLength"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:symbol-height">
+					<ref name="nonNegativeLength"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:sort-by-x-values">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:vertical">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:connect-bars">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:gap-width">
+					<ref name="integer"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:overlap">
+					<ref name="integer"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:group-bars-per-axis">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:japanese-candle-stick">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:interpolation">
+					<choice>
+						<value>none</value>
+						<value>cubic-spline</value>
+						<value>b-spline</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:spline-order">
+					<ref name="positiveInteger"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:spline-resolution">
+					<ref name="positiveInteger"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:pie-offset">
+					<ref name="nonNegativeInteger"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:angle-offset">
+					<ref name="angle"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:hole-size">
+					<ref name="percent"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:lines">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:solid-type">
+					<choice>
+						<value>cuboid</value>
+						<value>cylinder</value>
+						<value>cone</value>
+						<value>pyramid</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:stacked">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:percentage">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:treat-empty-cells">
+					<choice>
+						<value>use-zero</value>
+						<value>leave-gap</value>
+						<value>ignore</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:link-data-style-to-source">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:logarithmic">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:maximum">
+					<ref name="double"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:minimum">
+					<ref name="double"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:origin">
+					<ref name="double"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:interval-major">
+					<ref name="double"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:interval-minor-divisor">
+					<ref name="positiveInteger"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:tick-marks-major-inner">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:tick-marks-major-outer">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:tick-marks-minor-inner">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:tick-marks-minor-outer">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:reverse-direction">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:display-label">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:text-overlap">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="text:line-break">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:label-arrangement">
+					<choice>
+						<value>side-by-side</value>
+						<value>stagger-even</value>
+						<value>stagger-odd</value>
+					</choice>
+				</attribute>
+			</optional>
+			<ref name="common-style-direction-attlist"/>
+			<ref name="common-rotation-angle-attlist"/>
+			<optional>
+				<attribute name="chart:data-label-number">
+					<choice>
+						<value>none</value>
+						<value>value</value>
+						<value>percentage</value>
+						<value>value-and-percentage</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:data-label-text">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:data-label-symbol">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<element name="chart:label-separator">
+					<ref name="text-p"/>
+				</element>
+			</optional>
+			<optional>
+				<attribute name="chart:label-position">
+					<ref name="labelPositions"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:label-position-negative">
+					<ref name="labelPositions"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:visible">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:auto-position">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:auto-size">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:mean-value">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:error-category">
+					<choice>
+						<value>none</value>
+						<value>variance</value>
+						<value>standard-deviation</value>
+						<value>percentage</value>
+						<value>error-margin</value>
+						<value>constant</value>
+						<value>standard-error</value>
+						<value>cell-range</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:error-percentage">
+					<ref name="double"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:error-margin">
+					<ref name="double"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:error-lower-limit">
+					<ref name="double"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:error-upper-limit">
+					<ref name="double"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:error-upper-indicator">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:error-lower-indicator">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:error-lower-range">
+					<ref name="cellRangeAddressList"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:error-upper-range">
+					<ref name="cellRangeAddressList"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:series-source">
+					<choice>
+						<value>columns</value>
+						<value>rows</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:regression-type">
+					<choice>
+						<value>none</value>
+						<value>linear</value>
+						<value>logarithmic</value>
+						<value>exponential</value>
+						<value>power</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:axis-position">
+					<choice>
+						<value>start</value>
+						<value>end</value>
+						<ref name="double"/>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:axis-label-position">
+					<choice>
+						<value>near-axis</value>
+						<value>near-axis-other-side</value>
+						<value>outside-start</value>
+						<value>outside-end</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:tick-mark-position">
+					<choice>
+						<value>at-labels</value>
+						<value>at-axis</value>
+						<value>at-labels-and-axis</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="chart:include-hidden-cells">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="labelPositions">
+		<choice>
+			<value>avoid-overlap</value>
+			<value>center</value>
+			<value>top</value>
+			<value>top-right</value>
+			<value>right</value>
+			<value>bottom-right</value>
+			<value>bottom</value>
+			<value>bottom-left</value>
+			<value>left</value>
+			<value>top-left</value>
+			<value>inside</value>
+			<value>outside</value>
+			<value>near-origin</value>
+		</choice>
+	</define>
+	<define name="style-drawing-page-properties-attlist">
+		<interleave>
+			<optional>
+				<attribute name="presentation:transition-type">
+					<choice>
+						<value>manual</value>
+						<value>automatic</value>
+						<value>semi-automatic</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="presentation:transition-style">
+					<choice>
+						<value>none</value>
+						<value>fade-from-left</value>
+						<value>fade-from-top</value>
+						<value>fade-from-right</value>
+						<value>fade-from-bottom</value>
+						<value>fade-from-upperleft</value>
+						<value>fade-from-upperright</value>
+						<value>fade-from-lowerleft</value>
+						<value>fade-from-lowerright</value>
+						<value>move-from-left</value>
+						<value>move-from-top</value>
+						<value>move-from-right</value>
+						<value>move-from-bottom</value>
+						<value>move-from-upperleft</value>
+						<value>move-from-upperright</value>
+						<value>move-from-lowerleft</value>
+						<value>move-from-lowerright</value>
+						<value>uncover-to-left</value>
+						<value>uncover-to-top</value>
+						<value>uncover-to-right</value>
+						<value>uncover-to-bottom</value>
+						<value>uncover-to-upperleft</value>
+						<value>uncover-to-upperright</value>
+						<value>uncover-to-lowerleft</value>
+						<value>uncover-to-lowerright</value>
+						<value>fade-to-center</value>
+						<value>fade-from-center</value>
+						<value>vertical-stripes</value>
+						<value>horizontal-stripes</value>
+						<value>clockwise</value>
+						<value>counterclockwise</value>
+						<value>open-vertical</value>
+						<value>open-horizontal</value>
+						<value>close-vertical</value>
+						<value>close-horizontal</value>
+						<value>wavyline-from-left</value>
+						<value>wavyline-from-top</value>
+						<value>wavyline-from-right</value>
+						<value>wavyline-from-bottom</value>
+						<value>spiralin-left</value>
+						<value>spiralin-right</value>
+						<value>spiralout-left</value>
+						<value>spiralout-right</value>
+						<value>roll-from-top</value>
+						<value>roll-from-left</value>
+						<value>roll-from-right</value>
+						<value>roll-from-bottom</value>
+						<value>stretch-from-left</value>
+						<value>stretch-from-top</value>
+						<value>stretch-from-right</value>
+						<value>stretch-from-bottom</value>
+						<value>vertical-lines</value>
+						<value>horizontal-lines</value>
+						<value>dissolve</value>
+						<value>random</value>
+						<value>vertical-checkerboard</value>
+						<value>horizontal-checkerboard</value>
+						<value>interlocking-horizontal-left</value>
+						<value>interlocking-horizontal-right</value>
+						<value>interlocking-vertical-top</value>
+						<value>interlocking-vertical-bottom</value>
+						<value>fly-away</value>
+						<value>open</value>
+						<value>close</value>
+						<value>melt</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="presentation:transition-speed">
+					<ref name="presentationSpeeds"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="smil:type">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="smil:subtype">
+					<ref name="string"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="smil:direction">
+					<choice>
+						<value>forward</value>
+						<value>reverse</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="smil:fadeColor">
+					<ref name="color"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="presentation:duration">
+					<ref name="duration"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="presentation:visibility">
+					<choice>
+						<value>visible</value>
+						<value>hidden</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="draw:background-size">
+					<choice>
+						<value>full</value>
+						<value>border</value>
+					</choice>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="presentation:background-objects-visible">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="presentation:background-visible">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="presentation:display-header">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="presentation:display-footer">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="presentation:display-page-number">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+			<optional>
+				<attribute name="presentation:display-date-time">
+					<ref name="boolean"/>
+				</attribute>
+			</optional>
+		</interleave>
+	</define>
+	<define name="style-drawing-page-properties-elements">
+		<optional>
+			<ref name="presentation-sound"/>
+		</optional>
+	</define>
+	<define name="string">
+		<data type="string"/>
+	</define>
+	<define name="date">
+		<data type="date"/>
+	</define>
+	<define name="time">
+		<data type="time"/>
+	</define>
+	<define name="dateTime">
+		<data type="dateTime"/>
+	</define>
+	<define name="duration">
+		<data type="duration"/>
+	</define>
+	<define name="integer">
+		<data type="integer"/>
+	</define>
+	<define name="nonNegativeInteger">
+		<data type="nonNegativeInteger"/>
+	</define>
+	<define name="positiveInteger">
+		<data type="positiveInteger"/>
+	</define>
+	<define name="double">
+		<data type="double"/>
+	</define>
+	<define name="anyURI">
+		<data type="anyURI"/>
+	</define>
+	<define name="base64Binary">
+		<data type="base64Binary"/>
+	</define>
+	<define name="ID">
+		<data type="ID"/>
+	</define>
+	<define name="IDREF">
+		<data type="IDREF"/>
+	</define>
+	<define name="IDREFS">
+		<data type="IDREFS"/>
+	</define>
+	<define name="NCName">
+		<data type="NCName"/>
+	</define>
+	<define name="boolean">
+		<choice>
+			<value>true</value>
+			<value>false</value>
+		</choice>
+	</define>
+	<define name="dateOrDateTime">
+		<choice>
+			<data type="date"/>
+			<data type="dateTime"/>
+		</choice>
+	</define>
+	<define name="timeOrDateTime">
+		<choice>
+			<data type="time"/>
+			<data type="dateTime"/>
+		</choice>
+	</define>
+	<define name="language">
+		<data type="language"/>
+	</define>
+	<define name="countryCode">
+		<data type="token">
+			<param name="pattern">[A-Za-z0-9]{1,8}</param>
+		</data>
+	</define>
+	<define name="languageCode">
+		<data type="token">
+			<param name="pattern">[A-Za-z]{1,8}</param>
+		</data>
+	</define>
+	<define name="scriptCode">
+		<data type="token">
+			<param name="pattern">[A-Za-z0-9]{1,8}</param>
+		</data>
+	</define>
+	<define name="character">
+		<data type="string">
+			<param name="length">1</param>
+		</data>
+	</define>
+	<define name="length">
+		<data type="string">
+			<param name="pattern">-?([0-9]+(\.[0-9]*)?|\.[0-9]+)((cm)|(mm)|(in)|(pt)|(pc)|(px))</param>
+		</data>
+	</define>
+	<define name="nonNegativeLength">
+		<data type="string">
+			<param name="pattern">([0-9]+(\.[0-9]*)?|\.[0-9]+)((cm)|(mm)|(in)|(pt)|(pc)|(px))</param>
+		</data>
+	</define>
+	<define name="positiveLength">
+		<data type="string">
+			<param name="pattern">([0-9]*[1-9][0-9]*(\.[0-9]*)?|0+\.[0-9]*[1-9][0-9]*|\.[0-9]*[1-9][0-9]*)((cm)|(mm)|(in)|(pt)|(pc)|(px))</param>
+		</data>
+	</define>
+	<define name="percent">
+		<data type="string">
+			<param name="pattern">-?([0-9]+(\.[0-9]*)?|\.[0-9]+)%</param>
+		</data>
+	</define>
+	<define name="zeroToHundredPercent">
+		<data type="string">
+			<param name="pattern">([0-9]?[0-9](\.[0-9]*)?|100(\.0*)?|\.[0-9]+)%</param>
+		</data>
+	</define>
+	<define name="signedZeroToHundredPercent">
+		<data type="string">
+			<param name="pattern">-?([0-9]?[0-9](\.[0-9]*)?|100(\.0*)?|\.[0-9]+)%</param>
+		</data>
+	</define>
+	<define name="relativeLength">
+		<data type="string">
+			<param name="pattern">[0-9]+\*</param>
+		</data>
+	</define>
+	<define name="coordinate">
+		<ref name="length"/>
+	</define>
+	<define name="distance">
+		<ref name="length"/>
+	</define>
+	<define name="color">
+		<data type="string">
+			<param name="pattern">#[0-9a-fA-F]{6}</param>
+		</data>
+	</define>
+	<define name="angle">
+		<data type="string"/>
+	</define>
+	<define name="CURIE">
+		<data type="string">
+			<param name="pattern">(([\i-[:]][\c-[:]]*)?:)?.+</param>
+			<param name="minLength">1</param>
+		</data>
+	</define>
+	<define name="CURIEs">
+		<list>
+			<oneOrMore>
+				<ref name="CURIE"/>
+			</oneOrMore>
+		</list>
+	</define>
+	<define name="SafeCURIE">
+		<data type="string">
+			<param name="pattern">\[(([\i-[:]][\c-[:]]*)?:)?.+\]</param>
+			<param name="minLength">3</param>
+		</data>
+	</define>
+	<define name="URIorSafeCURIE">
+		<choice>
+			<ref name="anyURI"/>
+			<ref name="SafeCURIE"/>
+		</choice>
+	</define>
+	<define name="styleName">
+		<data type="NCName"/>
+	</define>
+	<define name="styleNameRef">
+		<choice>
+			<data type="NCName"/>
+			<empty/>
+		</choice>
+	</define>
+	<define name="styleNameRefs">
+		<list>
+			<zeroOrMore>
+				<data type="NCName"/>
+			</zeroOrMore>
+		</list>
+	</define>
+	<define name="variableName">
+		<data type="string"/>
+	</define>
+	<define name="targetFrameName">
+		<choice>
+			<value>_self</value>
+			<value>_blank</value>
+			<value>_parent</value>
+			<value>_top</value>
+			<ref name="string"/>
+		</choice>
+	</define>
+	<define name="valueType">
+		<choice>
+			<value>float</value>
+			<value>time</value>
+			<value>date</value>
+			<value>percentage</value>
+			<value>currency</value>
+			<value>boolean</value>
+			<value>string</value>
+		</choice>
+	</define>
+	<define name="points">
+		<data type="string">
+			<param name="pattern">-?[0-9]+,-?[0-9]+([ ]+-?[0-9]+,-?[0-9]+)*</param>
+		</data>
+	</define>
+	<define name="pathData">
+		<data type="string"/>
+	</define>
+	<define name="vector3D">
+		<data type="string">
+			<param name="pattern">\([ ]*-?([0-9]+(\.[0-9]*)?|\.[0-9]+)([ ]+-?([0-9]+(\.[0-9]*)?|\.[0-9]+)){2}[ ]*\)</param>
+		</data>
+	</define>
+	<define name="namespacedToken">
+		<data type="QName">
+			<param name="pattern">[^:]+:[^:]+</param>
+		</data>
+	</define>
+	<define name="anyIRI">
+		<data type="anyURI"/>
+		<dc:description>An IRI-reference as defined in [RFC3987]. See ODF 1.2 Part 1 section 18.3.</dc:description> 
+	</define>
+	<define name="anyAttListOrElements">
+		<zeroOrMore>
+			<attribute>
+				<anyName/>
+				<text/>
+			</attribute>
+		</zeroOrMore>
+		<ref name="anyElements"/>
+	</define>
+	<define name="anyElements">
+		<zeroOrMore>
+			<element>
+				<anyName/>
+				<mixed>
+					<ref name="anyAttListOrElements"/>
+				</mixed>
+			</element>
+		</zeroOrMore>
+	</define>
+</grammar>
diff --git a/validator/src/test/java/org/odftoolkit/odfvalidator/InvalidPackageTest.java b/validator/src/test/java/org/odftoolkit/odfvalidator/InvalidPackageTest.java
index 1cd55c8..8431503 100644
--- a/validator/src/test/java/org/odftoolkit/odfvalidator/InvalidPackageTest.java
+++ b/validator/src/test/java/org/odftoolkit/odfvalidator/InvalidPackageTest.java
@@ -106,8 +106,8 @@
 			t.printStackTrace();
 			Assert.fail(t.toString());
 		}
-		Assert.assertTrue(output.contains("Error: The ODF package 'testInvalidPkg3.odt' shall contain the 'META-INF/manifest.xml' file"));
-		Assert.assertTrue(output.contains("testInvalidPkg3.odt:  Info: 2 errors, no warnings"));
+		Assert.assertTrue("Output of validatePackage3(): " + output, output.contains("Error: The ODF package 'testInvalidPkg3.odt' shall contain the 'META-INF/manifest.xml' file"));
+		Assert.assertTrue("Output of validatePackage3(): " + output, output.contains("testInvalidPkg3.odt:  Info: 3 errors, no warnings"));
 	}
 
 	@Test